# WebSocket-微信小程序

需要注意,使用此能力需要小程序基础库版本最低为 2.21.1

# 能力使用

在小程序中使用如下的代码:

const { socketTask } = await wx.cloud.connectContainer({
  config: {
    env: 'wxrun-demo', // 替换自己的微信云托管的环境ID
  },
  service: 'ws', // 替换自己的服务名
  path: '/' // 不填默认根目录
})

# 请求参数

wx.cloud.connectContainer 参数:

属性 类型 默认值 必填 说明 最低版本
config.env string 云环境 ID 2.21.1
service string 服务名 2.21.1
path string 开发者服务器接口地址 2.21.1
success function - 接口调用成功的回调函数 2.21.1
fail function - 接口调用失败的回调函数 2.21.1
complete function - 接口调用结束的回调函数(调用成功、失败都会执行) 2.21.1

如果希望 wx.cloud.container 返回 Promise,请勿传 success, fail 和 complete

# 返回值

connectContainer Promise resolve 的结果 / success 回调的结果是如下对象,包含用于收发消息和管理链接的 socketTask 属性:

属性 类型 说明 最低版本
socketTask SocketTask socket 对象,和 wx.connectSocket 返回值一样

# 代码示例

在小程序 app.js 文件中替换如下代码:

App({
  onLaunch: async function () {
    wx.cloud.init({
      traceUser: true
    })
    const { socketTask } =  await wx.cloud.connectContainer({
      config: {
        env: 'wxrun-demo',  // 微信云托管的环境ID
      },
      service: 'ws',        // 服务名
      path: '/'             // 不填默认根目录
    })
    socketTask.onMessage(function (res) {
      console.log('【WEBSOCKET】', res.data)
    })
    socketTask.onOpen(function (res) {
      console.log('【WEBSOCKET】', '链接成功!')
      socketTask.send({
        data: '这是小程序消息'
      })
    })
    socketTask.onClose(function (res) {
      console.log('【WEBSOCKET】链接关闭!')
    })
  }
})