微信小程序中GoEasy實(shí)現(xiàn)websocket實(shí)時(shí)通訊的方法

這篇文章主要講解了微信小程序中GoEasy實(shí)現(xiàn)websocket實(shí)時(shí)通訊的方法,內(nèi)容清晰明了,對(duì)此有興趣的小伙伴可以學(xué)習(xí)一下,相信大家閱讀完之后會(huì)有幫助。

10年的云南網(wǎng)站建設(shè)經(jīng)驗(yàn),針對(duì)設(shè)計(jì)、前端、開(kāi)發(fā)、售后、文案、推廣等六對(duì)一服務(wù),響應(yīng)快,48小時(shí)及時(shí)工作處理。網(wǎng)絡(luò)營(yíng)銷(xiāo)推廣的優(yōu)勢(shì)是能夠根據(jù)用戶(hù)設(shè)備顯示端的尺寸不同,自動(dòng)調(diào)整云南建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無(wú)論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。成都創(chuàng)新互聯(lián)從事“云南網(wǎng)站設(shè)計(jì)”,“云南網(wǎng)站推廣”以來(lái),每個(gè)客戶(hù)項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。

不需要下載安裝,便可以在微信好友、微信群之間快速的轉(zhuǎn)發(fā),用戶(hù)只需要掃碼或者在微信里點(diǎn)擊,就可以立即運(yùn)行,有著近似APP的用戶(hù)體驗(yàn),使得微信小程序成為全民熱愛(ài)的好東西~

同時(shí)因?yàn)槲⑿判〕绦蚴褂玫氖荍avascript語(yǔ)法,對(duì)前端開(kāi)發(fā)人員而言,幾乎是沒(méi)有學(xué)習(xí)成本和技術(shù)門(mén)檻的。對(duì)于大部分場(chǎng)景,都可以使用小程序快速開(kāi)發(fā)實(shí)現(xiàn),不論是開(kāi)發(fā)周期還是開(kāi)發(fā)成本都低的讓人笑哭,所以受到了技術(shù)開(kāi)發(fā)團(tuán)隊(duì)的各種追捧~

但如果要在小程序里快速的實(shí)現(xiàn)一個(gè)即時(shí)通訊功能,就有點(diǎn)尷尬,因?yàn)槲⑿殴俜教峁┑闹皇且粋€(gè)底層的websocket api,要在項(xiàng)目中直接使用,還需要做很多額外的工作,比如首先就需要搭建自己的websocket服務(wù)~

那有沒(méi)有簡(jiǎn)單的方式呢? 當(dāng)然是有的!

今天小編就手把手的教您用GoEasy在微信小程序里,最短的時(shí)間快速實(shí)現(xiàn)一個(gè)websocket即時(shí)通訊Demo。

微信小程序中GoEasy實(shí)現(xiàn)websocket實(shí)時(shí)通訊的方法

本demo已經(jīng)完成了真機(jī)下的小程序的測(cè)試,完整源代碼開(kāi)源到oschina的碼云上,clone后,只需要將代碼里的appkey換成自己的common key,就可以體驗(yàn)了, 源碼網(wǎng)址:https://gitee.com/goeasy-io/GoEasyDemo-wxapp-Helloworld

1、獲取appkey

GoEasy官網(wǎng)上注冊(cè)賬號(hào),創(chuàng)建一個(gè)應(yīng)用,拿到您的appkey。

微信小程序中GoEasy實(shí)現(xiàn)websocket實(shí)時(shí)通訊的方法

GoEasy提供了兩種類(lèi)型的appkey:

  • Common key: 即可以接收消息,也可以發(fā)送消息,與Subscribe Key最大的區(qū)別就是有寫(xiě)權(quán)限,可以發(fā)消息。適用于有消息發(fā)送需求的客戶(hù)端和服務(wù)端開(kāi)發(fā)。
  • Subscribe key: 只能接收消息,不可以發(fā)送消息,與Common Key最大的區(qū)別就是沒(méi)有寫(xiě)權(quán)限,只能收消息。可以用于一些沒(méi)有發(fā)送需求的客戶(hù)端。

2、獲取GoEasy SDK

下載https://cdn.goeasy.io/download/goeasy-1.0.11.js

import GoEasy from './goeasy-1.0.11';

3、初始化GoEasy對(duì)象

var self = this;
this.goeasy = GoEasy({
 host: 'hangzhou.goeasy.io',
 appkey: "您的appkey",
 onConnected: function () {
  console.log("GoEasy connect successfully.");
  self.unshiftMessage("連接成功.");
 },
 onDisconnected: function () {
  console.log("GoEasy disconnected.")
  self.unshiftMessage("連接已斷開(kāi).");
 },
 onConnectFailed: function (error) {
  console.log(error);
  self.unshiftMessage("連接失敗,請(qǐng)檢查您的appkey和host配置");
 }
})

根據(jù)您在GoEasy后臺(tái)創(chuàng)建應(yīng)用時(shí)選擇的區(qū)域,來(lái)傳入不同的Host,如果您創(chuàng)建GoEasy應(yīng)用時(shí),選擇了杭州,那么host:"hangzhou.goeasy.io"。選擇了新加坡,host:"singapore.goeasy.io"。

如果您的大部分用戶(hù)都是在國(guó)內(nèi),創(chuàng)建應(yīng)用時(shí),記得選擇杭州,以便獲得更快的通訊速度。

4、小程序端接收消息

var self = this;
this.goeasy.subscribe({
 channel: "my_channel",
 onMessage: function (message) {
  self.unshiftMessage(message.content);
 },
 onSuccess: function () {
  self.unshiftMessage('訂閱成功.');
 }
});

很多朋友會(huì)問(wèn)channel從哪里來(lái),如何創(chuàng)建,應(yīng)該傳入什么呢?

根據(jù)您的業(yè)務(wù)需求來(lái)設(shè)定,channel可以為任意字符串,除了不能包含空格,和不建議使用中文外,沒(méi)有任何限制,只需要和消息的發(fā)送端保持一致,就可以收到消息。channel可以是您直播間的uuid,也可以是一個(gè)用戶(hù)的唯一表示符,可以任意定義,channel不需要?jiǎng)?chuàng)建,可以隨用隨棄。

5、小程序端發(fā)送消息:

發(fā)送時(shí),需要注意channel一定要和subscribe的channel完全一致,否則無(wú)法收到。

this.goeasy.publish({
 channel: "my_channel",
 message: self.data.message,
 onSuccess: function () {
  self.setData({
   message: ''
  }); //清空發(fā)送消息內(nèi)容
  console.log("send message success");
 },
 onFailed: function (error) {
  self.unshiftMessage('發(fā)送失敗,請(qǐng)檢查您的appkey和host配置.');
 }
});

本代碼源碼下載:https://gitee.com/goeasy-io/GoEasyDemo-wxapp-Helloworld

特別強(qiáng)調(diào):

在運(yùn)行之前,一定要在微信公眾號(hào)平臺(tái)配置socket合法域名,否則無(wú)法建立連接。具體步驟:
訪(fǎng)問(wèn)mp.weixin.qq.com,進(jìn)入微信公眾平臺(tái)|小程序 -> 設(shè)置 -> 開(kāi)發(fā)設(shè)置 -> 服務(wù)器域名
socket合法域名-> 添加GoEasy的地址: wx-hangzhou.goeasy.io(記得wx-開(kāi)頭)
若您創(chuàng)建GoEasy應(yīng)用時(shí)選擇了新加坡區(qū)域則添加地址:wx-singapore.goeasy.io

答疑時(shí)間:

1、我的服務(wù)器端可以給小程序發(fā)送消息嗎?都支持些哪些語(yǔ)言?

當(dāng)然可以,任何語(yǔ)言都可以通過(guò)調(diào)用GoEasy的Rest API發(fā)送消息,同時(shí)為了大家方便,GoEasy的官方文檔里,也準(zhǔn)備了Java, C#,NodeJS,PHP,Ruby和Python等常見(jiàn)語(yǔ)言調(diào)用REST API的代碼。

2、GoEasy可以發(fā)送圖片,語(yǔ)音和視頻嗎?

當(dāng)然可以,您可以通過(guò)推送文件路徑的方式來(lái)實(shí)現(xiàn)文件的發(fā)送。按照行業(yè)慣例,不論MSN,微信,QQ對(duì)于圖片和視頻,通常的做法都是,只推送文件路徑,而不會(huì)推送文件本身。你如果有注意的話(huà),當(dāng)您接受圖片和視頻的時(shí)候,收到消息后,等一會(huì)兒才能看,就是因?yàn)榘l(fā)送的時(shí)候,只發(fā)送了路徑。

3、GoEasy和微信小程序官方的websocket API有什么區(qū)別和優(yōu)勢(shì)?

小程序官方的websocket API主要是用來(lái)與您的websocket服務(wù)通訊,所以使用小程序websocket的前提是,首先要搭建好您自己的websocket服務(wù),然后與之通訊。這是一個(gè)純技術(shù)的API,在建立網(wǎng)絡(luò)連接后,還有很多的工作需要自己來(lái)完成,比如:

  • 需要自己實(shí)現(xiàn)心跳機(jī)制,來(lái)維護(hù)網(wǎng)絡(luò)連接,來(lái)判斷客戶(hù)端的網(wǎng)絡(luò)連接狀態(tài);
  • 需要自己實(shí)現(xiàn)斷網(wǎng)自動(dòng)重連;需要自己維護(hù)消息列表,確保遇到斷網(wǎng)重連后,消息能夠補(bǔ)發(fā);
  • 需要自己維護(hù)一個(gè)客戶(hù)端列表;
  • 等等很多細(xì)致而繁雜的工作,比如websocket的安全機(jī)制和性能優(yōu)化;

此之外服務(wù)端也有很多工作需要自己完成,有興趣自己搭建websocket的話(huà),可以參考這篇技術(shù)分享《搭建websocket消息推送服務(wù),必須要考慮的幾個(gè)問(wèn)題》

而GoEasy是一個(gè)成熟穩(wěn)定的企業(yè)級(jí)websocket PAAS服務(wù)平臺(tái),開(kāi)發(fā)人員不需要考慮websocket服務(wù)端的搭建,只需要幾行代碼,就可以輕松實(shí)現(xiàn)客戶(hù)端與客戶(hù)端之間,服務(wù)器與客戶(hù)端之間的的websocket通信,不需要考慮性能,安全,高可用集群的問(wèn)題,只需要全力專(zhuān)注于開(kāi)發(fā)自己的業(yè)務(wù)功能就好了。

GoEasy已經(jīng)內(nèi)置websocket中必備的心跳,斷網(wǎng)重連,消息補(bǔ)發(fā),歷史消息和客戶(hù)端上下線(xiàn)提醒等特性,開(kāi)發(fā)人員也不需要自己搭建websocket服務(wù)處理集群高可用,安全和性能問(wèn)題。GoEasy已經(jīng)穩(wěn)定運(yùn)行了5年,支持千萬(wàn)級(jí)并發(fā),成功支撐過(guò)很多知名企業(yè)的重要活動(dòng),安全性和可靠性都是久經(jīng)考驗(yàn)。

4、GoEasy在小程序的開(kāi)發(fā)中主要用在那些場(chǎng)景呢?

從應(yīng)用場(chǎng)景上來(lái)說(shuō),所有需要websocket通信的場(chǎng)景,GoEasy都可以完美支持:

  • 聊天,IM,直播彈幕,用戶(hù)上下線(xiàn)提醒, 在線(xiàn)用戶(hù)列表
  • 掃碼點(diǎn)菜,掃碼登錄, 掃碼支付, 掃碼簽到, 掃碼打印
  • 事件提醒,工單,訂單實(shí)時(shí)提醒
  • 在線(xiàn)拍賣(mài), 在線(xiàn)點(diǎn)餐,在線(xiàn)選座 實(shí)時(shí)數(shù)據(jù)展示,實(shí)時(shí)監(jiān)控大屏, 金融實(shí)時(shí)行情顯示,設(shè)備監(jiān)控系統(tǒng)
  • 實(shí)時(shí)位置跟蹤,外賣(mài)實(shí)時(shí)跟蹤,物流實(shí)時(shí)跟蹤
  • 遠(yuǎn)程畫(huà)板,遠(yuǎn)程醫(yī)療,游戲,遠(yuǎn)程在線(xiàn)授課

5、GoEasy的文檔為什么這么簡(jiǎn)單?簡(jiǎn)單到我都不知道如何使用

簡(jiǎn)單還不好嗎?GoEasy從研發(fā)的第一天,就把追求API的極簡(jiǎn)作為我們的工作重點(diǎn)。嚴(yán)格控制接口的數(shù)量,就是是為了降低開(kāi)發(fā)人員的學(xué)習(xí)成本,其實(shí)就是為了讓您爽啊!但這并不影響GoEasy完美支持所有的websocket即時(shí)通訊需求。

看完上述內(nèi)容,是不是對(duì)微信小程序中GoEasy實(shí)現(xiàn)websocket實(shí)時(shí)通訊的方法有進(jìn)一步的了解,如果還想學(xué)習(xí)更多內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

本文題目:微信小程序中GoEasy實(shí)現(xiàn)websocket實(shí)時(shí)通訊的方法
分享鏈接:http://muchs.cn/article0/ghsjoo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供虛擬主機(jī)、網(wǎng)站制作、面包屑導(dǎo)航、微信公眾號(hào)、網(wǎng)站收錄、服務(wù)器托管

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

綿陽(yáng)服務(wù)器托管