Uniapp 使用 GoEasy 實現 websocket 實時通訊

GoEasy發表於2020-05-07

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,直播彈幕,使用者上下線提醒, 線上使用者列表

掃碼點菜,掃碼登入, 掃碼支付, 掃碼簽到, 掃碼列印

事件提醒,工單,訂單實時提醒

線上拍賣, 線上點餐,線上選座 實時資料展示,實時監控大屏, 金融實時行情顯示,裝置監控系統

實時位置跟蹤,外賣實時跟蹤,物流實時跟蹤

遠端畫板,遠端醫療,遊戲,遠端線上授課

3、GoEasy的文件為什麼這麼簡單?簡單到我都不知道如何使用

簡單還不好嗎?GoEasy從研發的第一天,就把追求API的極簡作為我們的工作重點。嚴格控制介面的數量,就是是為了降低開發人員的學習成本,其實就是為了讓您爽啊!但這並不影響GoEasy完美支援所有的websocket即時通訊需求。

今天小編就手把手的教您用GoEasy在Uniapp下,最短的時間實現一個的web即時通訊Demo。

image

本demo已經透過小程式, iOS和Android的真機測試,完整原始碼已經上傳gitee,下載後,只需要將程式碼裡的appkey換成自己的common key,就可以體驗了。下載地址:

gitee.com/goeasy-io/GoEasyDemo-Uni...

1、獲取appkey

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

image

GoEasy提供了兩種型別的appkey:

Common key: 即可以接收訊息,也可以傳送訊息,與Subscriber Key最大的區別就是有寫許可權,可以發訊息。適用於有訊息傳送需求的客戶端和服務端開發。

Subscriber key: 只能接收訊息,不可以傳送訊息,與Common Key最大的區別就是沒有寫許可權,只能收訊息。可以用於一些沒有傳送需求的客戶端。

2、獲取GoEasy SDK

兩個方式:

DCloud Uniapp的外掛市場下載:ext.dcloud.net.cn/plugin?id=1334

也可以直接在goeasy官網下載:www.goeasy.io/cn/doc/client/get-go...

3、初始化GoEasy物件

在main.js中將goeasy初始化為Uniapp的全域性物件,方便所有頁面都能方便的呼叫,同時也避免多個頁面反覆new GoEasy物件。

根據您在GoEasy後臺建立應用時選擇的區域,來傳入不同的Host,如果您建立goeasy應用時,選擇了杭州,那麼host:”hangzhou.goeasy.io”。選擇了新加坡,host:”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!" //替換為您想要傳送的訊息內容

});

本程式碼原始碼下載:

gitee.com/goeasy-io/GoEasyDemo-Uni...

小程式特別強調:

若您需要打包為微信小程式,需要在微信公眾號平臺配置socket合法域名,否則無法使用。 具體步驟:

訪問mp.weixin.qq.com,進入微信公眾平臺|小程式 -> 設定 -> 開發設定 -> 伺服器域名

socket合法域名-> 新增 goeasy的地址:wx-hangzhou.goeasy.io(記得wx-開頭)

若您建立GoEasy應用時選擇了新加坡區域則新增地址:wx-singapore.goeasy.io

答疑時間:

1、我的伺服器端可以傳送訊息嗎?都支援些哪些語言?

當然可以,任何語言都可以透過呼叫goeasy的Rest API傳送訊息,同時為了大家方便,GoEasy的官方文件裡,也準備了Java, C#,NodeJS,PHP,Ruby和Python等常見語言呼叫REST API的程式碼,這裡獲取更多詳情:www.goeasy.io/cn/doc/server/publis...

2、GoEasy可以傳送圖片,語音和影片嗎?

當然可以,您可以透過推送檔案路徑的方式來實現檔案的傳送。

按照行業慣例,不論MSN,微信,QQ對於圖片和影片,通常的做法都是,只推送檔案路徑,而不會推送檔案本身。你如果有注意的話,當您接受圖片和影片的時候,收到訊息後,等一會兒才能看,就是因為傳送的時候,只傳送了路徑。

GoEasy系列教程:

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章