在微信小程序中使用云巴实时通信系统

准备

云巴在微信小程序中的使用基于 socket io,有关 socket io 的接口详细介绍可以参考我们的socket io 官方文档

由于微信原生 API 中只支持 WebSocket,没有提供 socket io 的接口。为方便起见,本 demo 使用了 socket io client 的库来连接云巴。

参考我们的微信小程序 demo 来在微信小程序中中集成云巴。关键的使用说明如下:

使用

首先,参考该 socket io client 的使用说明在项目中引入该库。

在本例中即在 app.js 中 import 并初始化一个全局的 io 对象以供调用:

...
import io from './lib/wxsocket.io/index'
...
onLaunch: function () {
  this,globalData.io = io
}

然后,在需要连接到云巴的时候,首先连接到我们的 socket io 服务器:

...
const socket = app.globalData.io("wss://abj-rest-fc1.yunba.io:443/")

本例中即在 index.js 中使用全局的 io 对象连接到 wss://abj-rest-fc1.yunba.io:443/,在监听到 connect 事件的时候,就说明连接上云巴的 socket io 服务器了。

...
    socket.on('connect', function () {
      self.setData({
        connected: true
      })

此时就可以 emit 一个 connect_v2 事件,使用 appkey 和 customid 来连接云巴,在监听到 connack 事件的时候说明已经连接上云巴的实时通信系统,可以开始使用云巴的实时通信了。(注:customid 即自定义的会话 id(session id),云巴会保留 session 信息,也就是下次再用此 customid 来连接的话,别名和订阅关系等信息均会保留。同时这也意味着同一时间只允许一个同名的 customid 在线,后上线的会挤掉前面的。

...
app.globalData.socket.emit('connect_v2', { 'appkey': this.data.appkey, 'customid': this.data.customid })
...
    socket.on('connack', function (msg) {
      if (msg['success'] == true) {
        app.globalData.Online = true
        wx.navigateTo({
          url: '../yunba/yunba'
        })
      }
    })

reference: socket io 接口列表