不須要下載安裝,即可以在微信好友、微信羣之間快速的轉發,用戶只須要掃碼或者在微信裏點擊,就能夠當即運行,有着近似APP的用戶體驗,使得微信小程序成爲全民熱愛的好東西~html
同時由於微信小程序使用的是Javascript語法,對前端開發人員而言,幾乎是沒有學習成本和技術門檻的。對於大部分場景,均可以使用小程序快速開發實現,不管是開發週期仍是開發成本都低的讓人笑哭,因此受到了技術開發團隊的各類追捧~前端
但若是要在小程序裏快速的實現一個即時通信功能,就有點尷尬,由於微信官方提供的只是一個底層的websocket api,要在項目中直接使用,還須要作不少額外的工做,好比首先就須要搭建本身的websocket服務~ git
那有沒有簡單的方式呢? 固然是有的!web
今天小編就手把手的教您用GoEasy在微信小程序裏,最短的時間快速實現一個websocket即時通信Demo。小程序
本demo已經完成了真機下的小程序的測試,完整源代碼開源到oschina的碼雲上,clone後,只須要將代碼裏的appkey換成本身的common key,就能夠體驗了, 源碼網址:https://gitee.com/goeasy-io/GoEasyDemo-wxapp-Helloworld微信小程序
GoEasy官網(https://www.goeasy.io/)上註冊帳號,建立一個應用,拿到您的appkey。
api
GoEasy提供了兩種類型的appkey:安全
Common key: 便可以接收消息,也能夠發送消息,與Subscribe Key最大的區別就是有寫權限,能夠發消息。適用於有消息發送需求的客戶端和服務端開發。性能優化
下載 https://cdn.goeasy.io/download/goeasy-1.0.11.js服務器
import GoEasy from './goeasy-1.0.11';
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
固然能夠,您能夠經過推送文件路徑的方式來實現文件的發送。
按照行業慣例,不論MSN,微信,QQ對於圖片和視頻,一般的作法都是,只推送文件路徑,而不會推送文件自己。你若是有注意的話,當您接受圖片和視頻的時候,收到消息後,等一下子才能看,就是由於發送的時候,只發送了路徑。
小程序官方的websocket API主要是用來與您的websocket服務通信,因此使用小程序websocket的前提是,首先要搭建好您本身的websocket服務,而後與之通信。這是一個純技術的API,在創建網絡鏈接後,還有不少的工做須要本身來完成,好比:
此以外服務端也有不少工做須要本身完成,有興趣本身搭建websocket的話,能夠參考這篇技術分享《搭建websocket消息推送服務,必需要考慮的幾個問題》
而GoEasy是一個成熟穩定的企業級websocket PAAS服務平臺,開發人員不須要考慮websocket服務端的搭建,只須要幾行代碼,就能夠輕鬆實現客戶端與客戶端之間,服務器與客戶端之間的的websocket通訊,不須要考慮性能,安全,高可用集羣的問題,只須要全力專一於開發本身的業務功能就行了。
GoEasy已經內置websocket中必備的心跳,斷網重連,消息補發,歷史消息和客戶端上下線提醒等特性,開發人員也不須要本身搭建websocket服務處理集羣高可用,安全和性能問題。GoEasy已經穩定運行了5年,支持千萬級併發,成功支撐過不少知名企業的重要活動,安全性和可靠性都是久經考驗。
從應用場景上來講,全部須要websocket通訊的場景,GoEasy均可以完美支持:
簡單還很差嗎?GoEasy從研發的第一天,就把追求API的極簡做爲咱們的工做重點。嚴格控制接口的數量,就是是爲了下降開發人員的學習成本,其實就是爲了讓您爽啊!但這並不影響GoEasy完美支持全部的websocket即時通信需求。
GoEasy官網:https://www.goeasy.io