Uniapp使用GoEasy實現websocket實時通信

Uniapp做爲近來最火的移動端開發技術,一套代碼,能夠打包成Android/iOS app和各類平臺的小程序,可謂是沒有最方便只有更方便。html

GoEasy上架DCloud Uniapp插件市場已經有一個多月了,收到不少Uniapp開發人員的讚賞和好評,小編在此隔着屏幕向你們鞠躬,小編和GoEasy團隊會繼續努力,持續爲Uniapp開發者提供最簡單且優雅的API,穩定高速可靠的即時通信服務。android

這段時間,也收到了不少朋友的一些問題?好比:git

一、GoEasy和Uniapp websocket API有什麼區別和優點?github

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

  • 須要本身實現心跳機制,來維護網絡鏈接,來判斷客戶端的網絡鏈接狀態;
  • 須要本身實現斷網自動重連;
  • 須要本身維護消息列表,確保遇到斷網重連後,消息可以補發;
  • 須要本身維護一個客戶端列表;
  • ...

等等不少細緻而繁雜的工做,好比websocket的安全機制和性能優化;小程序

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

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

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

二、GoEasy在Uniapp開發中主要用在哪些場景呢?服務器

首先從技術上說,Uniapp支持的全部技術android, iOS和小程序,GoEasy都是完美支持的。

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

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

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

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

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

本demo已經經過小程序, iOS和Android的真機測試,完整源代碼已經上傳github,下載後,只須要將代碼裏的appkey換成本身的common key,就能夠體驗了。下載地址:

https://github.com/GoEasySupport/goeasy-uniapp-helloworld

一、獲取appkey

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

GoEasy提供了兩種類型的appkey:

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

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

二、獲取GoEasy SDK

兩個方式:

DCloud Uniapp的插件市場下載:https://ext.dcloud.net.cn/plugin?id=1334

也能夠直接在goeasy官網下載:https://www.goeasy.io/cn/doc/client/get-goeasy-js.html

三、初始化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('鏈接失敗或錯誤!')
    }
});

四、uniapp端接收消息

this.$goEasy.subscribe({
    channel: "my_channel", //替換爲您本身的channel
    onMessage: function (message) {
        alert("Channel:" + message.channel + " content:" + message.content);
    }
});

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

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

五、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的地址: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對於圖片和視頻,一般的作法都是,只推送文件路徑,而不會推送文件自己。你若是有注意的話,當您接受圖片和視頻的時候,收到消息後,等一下子才能看,就是由於發送的時候,只發送了路徑。

相關文章
相關標籤/搜索