微信小程序使用GoEasy實現websocket實時通信

不須要下載安裝,即可以在微信好友、微信羣之間快速的轉發,用戶只須要掃碼或者在微信裏點擊,就能夠當即運行,有着近似APP的用戶體驗,使得微信小程序成爲全民熱愛的好東西~html

同時由於微信小程序使用的是Javascript語法,對前端開發人員而言,幾乎是沒有學習成本和技術門檻的。對於大部分場景,均可以使用小程序快速開發實現,不管是開發週期仍是開發成本都低的讓人笑哭,因此受到了技術開發團隊的各類追捧~前端

但若是要在小程序裏快速的實現一個即時通信功能,就有點尷尬,由於微信官方提供的只是一個底層的websocket api,要在項目中直接使用,還須要作不少額外的工做,好比首先就須要搭建本身的websocket服務~ git

那有沒有簡單的方式呢? 固然是有的!web

今天小編就手把手的教您用GoEasy在微信小程序裏,最短的時間快速實現一個websocket即時通信Demo。小程序

image

本demo已經完成了真機下的小程序的測試,完整源代碼開源到oschina的碼雲上,clone後,只須要將代碼裏的appkey換成本身的common key,就能夠體驗了, 源碼網址:https://gitee.com/goeasy-io/GoEasyDemo-wxapp-Helloworld微信小程序

一、獲取appkey

GoEasy官網(https://www.goeasy.io/)上註冊帳號,建立一個應用,拿到您的appkey。
imageapi

GoEasy提供了兩種類型的appkey:安全

  • Common key: 便可以接收消息,也能夠發送消息,與Subscribe Key最大的區別就是有寫權限,能夠發消息。適用於有消息發送需求的客戶端和服務端開發。性能優化

  • Subscribe key: 只能接收消息,不能夠發送消息,與Common Key最大的區別就是沒有寫權限,只能收消息。能夠用於一些沒有發送需求的客戶端。

二、獲取GoEasy SDK

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

import GoEasy from './goeasy-1.0.11';

三、初始化GoEasy對象

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("鏈接已斷開.");
    },
    onConnectFailed: function (error) {
        console.log(error);
        self.unshiftMessage("鏈接失敗,請檢查您的appkey和host配置");
    }
})

根據您在GoEasy後臺建立應用時選擇的區域,來傳入不一樣的Host,若是您建立GoEasy應用時,選擇了杭州,那麼host:"hangzhou.goeasy.io"。選擇了新加坡,host:"singapore.goeasy.io"。

若是您的大部分用戶都是在國內,建立應用時,記得選擇杭州,以便得到更快的通信速度。

四、小程序端接收消息

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

不少朋友會問channel從哪裏來,如何建立,應該傳入什麼呢?

根據您的業務需求來設定,channel能夠爲任意字符串,除了不能包含空格,和不建議使用中文外,沒有任何限制,只須要和消息的發送端保持一致,就能夠收到消息。channel能夠是您直播間的uuid,也能夠是一個用戶的惟一表示符,能夠任意定義,channel不須要建立,能夠隨用隨棄。

五、小程序端發送消息:

發送時,須要注意channel必定要和subscribe的channel徹底一致,不然沒法收到。

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

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

特別強調:

在運行以前,必定要在微信公衆號平臺配置socket合法域名,不然沒法創建鏈接。具體步驟:
訪問https://mp.weixin.qq.com,進入微信公衆平臺|小程序 -> 設置 -> 開發設置 -> 服務器域名
socket合法域名-> 添加GoEasy的地址: wx-hangzhou.goeasy.io(記得wx-開頭)
若您建立GoEasy應用時選擇了新加坡區域則添加地址:wx-singapore.goeasy.io

答疑時間:

一、個人服務器端能夠給小程序發送消息嗎?都支持些哪些語言?

固然能夠,任何語言均可以經過調用GoEasy的Rest API發送消息,同時爲了你們方便,GoEasy的官方文檔裏,也準備了Java, C#,NodeJS,PHP,Ruby和Python等常見語言調用REST API的代碼,這裏獲取更多詳情:https://www.goeasy.io/cn/doc/server/publish.html

二、GoEasy能夠發送圖片,語音和視頻嗎?

固然能夠,您能夠經過推送文件路徑的方式來實現文件的發送。
按照行業慣例,不論MSN,微信,QQ對於圖片和視頻,一般的作法都是,只推送文件路徑,而不會推送文件自己。你若是有注意的話,當您接受圖片和視頻的時候,收到消息後,等一下子才能看,就是由於發送的時候,只發送了路徑。

三、GoEasy和微信小程序官方的websocket API有什麼區別和優點?

小程序官方的websocket API主要是用來與您的websocket服務通信,因此使用小程序websocket的前提是,首先要搭建好您本身的websocket服務,而後與之通信。這是一個純技術的API,在創建網絡鏈接後,還有不少的工做須要本身來完成,好比:

  • 須要本身實現心跳機制,來維護網絡鏈接,來判斷客戶端的網絡鏈接狀態;
  • 須要本身實現斷網自動重連;
  • 須要本身維護消息列表,確保遇到斷網重連後,消息可以補發;
  • 須要本身維護一個客戶端列表;
  • 等等不少細緻而繁雜的工做,好比websocket的安全機制和性能優化;

此以外服務端也有不少工做須要本身完成,有興趣本身搭建websocket的話,能夠參考這篇技術分享《搭建websocket消息推送服務,必需要考慮的幾個問題

而GoEasy是一個成熟穩定的企業級websocket PAAS服務平臺,開發人員不須要考慮websocket服務端的搭建,只須要幾行代碼,就能夠輕鬆實現客戶端與客戶端之間,服務器與客戶端之間的的websocket通訊,不須要考慮性能,安全,高可用集羣的問題,只須要全力專一於開發本身的業務功能就行了。

GoEasy已經內置websocket中必備的心跳,斷網重連,消息補發,歷史消息和客戶端上下線提醒等特性,開發人員也不須要本身搭建websocket服務處理集羣高可用,安全和性能問題。GoEasy已經穩定運行了5年,支持千萬級併發,成功支撐過不少知名企業的重要活動,安全性和可靠性都是久經考驗。

四、GoEasy在小程序的開發中主要用在那些場景呢?

從應用場景上來講,全部須要websocket通訊的場景,GoEasy均可以完美支持:

  • 聊天,IM,直播彈幕,用戶上下線提醒, 在線用戶列表
  • 掃碼點菜,掃碼登陸, 掃碼支付, 掃碼簽到, 掃碼打印
  • 事件提醒,工單,訂單實時提醒
  • 在線拍賣, 在線點餐,在線選座 實時數據展現,實時監控大屏, 金融實時行情顯示,設備監控系統
  • 實時位置跟蹤,外賣實時跟蹤,物流實時跟蹤
  • 遠程畫板,遠程醫療,遊戲,遠程在線授課

五、GoEasy的文檔爲何這麼簡單?簡單到我都不知道如何使用

簡單還很差嗎?GoEasy從研發的第一天,就把追求API的極簡做爲咱們的工做重點。嚴格控制接口的數量,就是是爲了下降開發人員的學習成本,其實就是爲了讓您爽啊!但這並不影響GoEasy完美支持全部的websocket即時通信需求。

GoEasy官網:https://www.goeasy.io

相關文章
相關標籤/搜索