
Uniapp作為近來最火的移動端開發技術,一套代碼,可以打包成Android/iOS app和各種平台的小程式,可謂是沒有最友善隻有更友善。
GoEasy上架DCloud Uniapp插件市場已經有一個多月了,收到很多Uniapp開發人員的贊揚和好評,小編在此隔着螢幕向大家鞠躬,小編和GoEasy團隊會繼續努力,持續為Uniapp開發者提供最簡單且優雅的API,穩定高速可靠的即時通訊服務。
這段時間,也收到了很多朋友的一些問題?比如:
1、GoEasy和Uniapp websocket API有什麼差別和優勢?Uniapp官方的websocket API主要是用來與您的websocket服務通訊,是以使用Uniapp websocket的前提是,首先要搭建好您自己的websocket服務,然後與之通訊。這是一個純技術的API,在建立網絡連接配接後,還有很多的工作需要自己來完成,比如:
- 需要自己實作心跳機制,來維護網絡連接配接,來判斷用戶端的網絡連接配接狀态;
- 需要自己實作斷網自動重連;
- 需要自己維護消息清單,確定遇到斷網重連後,消息能夠補發;
- 需要自己維護一個用戶端清單;
- ...
- 等等很多細緻而繁雜的工作,比如websocket的安全機制和性能優化;
除此之外服務端也有很多工作需要自己完成,有興趣自己搭建websocket的話,可以參考這篇技術分享《搭建websocket消息推送服務,必須要考慮的幾個問題》
而GoEasy是一個成熟穩定的websocket企業級PAAS服務平台,開發人員不需要考慮websocket服務端的搭建,隻需要幾行代碼,就可以輕松實作用戶端與用戶端之間,伺服器與用戶端之間的的websocket通信,不需要考慮性能,安全,高可用叢集的問題。隻需要全力專注于開發自己的業務功能就好了。
GoEasy已經内置websocket中必備的心跳,斷網重連,消息補發,曆史消息和用戶端上下線提醒等特性,開發人員也不需要自己搭建websocket服務處理叢集高可用,安全和性能問題。GoEasy已經穩定運作了5年,支援千萬級并發,成功支撐過很多知名企業的重要活動,安全性和可靠性都是久經考驗。
2、GoEasy在Uniapp開發中主要用在哪些場景呢?首先從技術上說,Uniapp支援的所有技術android, iOS和小程式,GoEasy都是完美支援的。
從應用場景上來說,所有需要websocket通信的場景,GoEasy都可以完美支援:
- 聊天,IM,直播彈幕,使用者上下線提醒, 線上使用者清單
- 掃碼點菜,掃碼登入, 掃碼支付, 掃碼簽到, 掃碼列印
- 事件提醒,工單,訂單實時提醒
- 線上拍賣, 線上點餐,線上選座 實時資料展示,實時監控大屏, 金融實時行情顯示,裝置監控系統
- 實時位置跟蹤,外賣實時跟蹤,物流實時跟蹤
- 遠端畫闆,遠端醫療,遊戲,遠端線上授課
- ...
簡單還不好嗎?GoEasy從研發的第一天,就把追求API的極簡作為我們的工作重點。嚴格控制接口的數量,就是是為了降低開發人員的學習成本,其實就是為了讓您爽啊!但這并不影響GoEasy完美支援所有的websocket即時通訊需求。
今天小編就手把手的教您用GoEasy在Uniapp下,最短的時間實作一個的web即時通訊Demo。
本demo已經通過小程式, iOS和Android的真機測試,完整源代碼已經上傳github,下載下傳後,隻需要将代碼裡的appkey換成自己的common key,就可以體驗了。下載下傳位址:
https://github.com/GoEasySupport/goeasy-uniapp-helloworld
1、擷取appkeyGoEasy官網(https://www.goeasy.io/)上新增賬號,建立一個應用,拿到您的appkey
GoEasy提供了兩種類型的appkey:
Common key: 即可以接收消息,也可以發送消息,與Subscriber Key最大的差別就是有寫權限,可以發消息。适用于有消息發送需求的用戶端和服務端開發。
Subscriber key: 隻能接收消息,不可以發送消息,與Common Key最大的差別就是沒有寫權限,隻能收消息。可以用于一些沒有發送需求的用戶端。
2、擷取GoEasy SDK兩個方式:
DCloud Uniapp的插件市場下載下傳:https://ext.dcloud.net.cn/plugin?id=1334
也可以直接在goeasy官網下載下傳:https://www.goeasy.io/cn/doc/client/get-goeasy-js.html
3、初始化GoEasy對象在main.js中将goeasy初始化為Uniapp的全局對象,友善所有頁面都能友善的調用,同時也避免多個頁面反複new GoEasy對象。
根據您在GoEasy背景建立應用時選擇的區域,來傳入不同的Host,如果您建立goeasy應用時,選擇了杭州,那麼host:"http://hangzhou.goeasy.io"。選擇了新加坡,host:"http://singapore.goeasy.io"。
如果您的大部分使用者都是在國内,建立應用時,記得選擇杭州,以便獲得更快的通訊速度。
// 在main.js中将goeasy初始化為全局對象,所有頁面都能友善的調用,也避免多個頁面反複new GoEasy對象
Vue.prototype.$goEasy = new GoEasy({
host: "hangzhou.goeasy.io",
appkey: "my_appkey", //替換為您的應用appkey
onConnected: function() {
console.log('連接配接成功!')
},
onDisconnected: function() {
console.log('連接配接斷開!')
},
onConnectFailed: function(error) {
console.log('連接配接失敗或錯誤!')
}
});
4、uniapp端接收消息 this.$goEasy.subscribe({
channel: "my_channel", //替換為您自己的channel
onMessage: function (message) {
alert("Channel:" + message.channel + " content:" + message.content);
}
});
很多朋友會問channel從哪裡來,如何建立,應該傳入什麼呢?
根據您的業務需求來設定,channel可以為任意字元串,除了不能包含空格,和不建議使用中文外,沒有任何限制,隻需要和消息的發送端保持一緻,就可以收到消息。channel可以是您直播間的uuid,也可以是一個使用者的唯一表示符,可以任意定義,channel不需要建立,可以随用随棄。
5、uniapp端發送消息發送時,需要注意channel一定要和subscriber的channel完全一緻,否則無法收到。
this.$goEasy.publish({
channel: "my_channel", //替換為您自己的channel
message: "Hello, GoEasy!" //替換為您想要發送的消息内容
});
本代碼源碼下載下傳:
https://github.com/GoEasySupport/goeasy-uniapp-helloworld
小程式特别強調:若您需要打包為微信小程式,需要在微信公衆号平台配置socket合法域名,否則無法使用。 具體步驟:
通路https://mp.weixin.qq.com,進入微信公衆平台|小程式 -> 設定 -> 開發設定 -> 伺服器域名
socket合法域名-> 添加 goeasy的位址:http://wx-hangzhou.goeasy.io(記得wx-開頭)
若您建立GoEasy應用時選擇了新加坡區域則添加位址:http://wx-singapore.goeasy.io
答疑時間:1、我的伺服器端可以發送消息嗎?都支援些哪些語言?
當然可以,任何語言都可以通過調用goeasy的Rest API發送消息,同時為了大家友善,GoEasy的官方文檔裡,也準備了Java, C#,NodeJS,PHP,Ruby和Python等常見語言調用REST API的代碼,這裡擷取更多詳情https://www.goeasy.io/cn/doc/server/publish.html
2、GoEasy可以發送圖檔,語音和視訊嗎?
當然可以,您可以通過推送檔案路徑的方式來實作檔案的發送。
按照行業慣例,不論MSN,微信,QQ對于圖檔和視訊,通常的做法都是,隻推送檔案路徑,而不會推送檔案本身。你如果有注意的話,當您接受圖檔和視訊的時候,收到消息後,等一會兒才能看,就是因為發送的時候,隻發送了路徑。