# WebSocket-公众号H5

需要注意,使用此能力需要WEB-SDK版本最低为 3.4.0

# 能力使用

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

// 初始化 Cloud 实例
var c1 = new wx.cloud.Cloud({
  identityless: true, // 如果你是普通WEB网页开发,设置为true,如果是公众号开发,则去掉
  resourceAppid: "小程序或公众号appid", // 微信云托管所在的「小程序/公众号」appid
  resourceEnv: "微信云托管ID", // 微信云托管环境ID,不能为空
});
await c1.init();

const res = await c1.connectContainer({
  path: '/xxx', // 填入业务自定义路径和参数,根目录,就是 / 
  header: {
    'X-WX-SERVICE': 'xxx', // xxx中填入服务名称(微信云托管 - 服务管理 - 服务列表 - 服务名称)
  }
  // 其余参数同 wx.connectSocket
});

# 请求参数

cloud.connectContainer 参数:

属性 类型 默认值 必填 说明 最低版本
header.'X-WX-SERVICE' string 服务名 3.4
path string 开发者服务器接口地址 3.4
success function - 接口调用成功的回调函数 3.4
fail function - 接口调用失败的回调函数 3.4
complete function - 接口调用结束的回调函数(调用成功、失败都会执行) 3.4

# 返回值

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

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

# 代码示例

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

<script src="https://web-9gikcbug35bad3a8-1304825656.tcloudbaseapp.com/sdk/1.3.0/cloud.js"></script>
<script>
  window.onload = async function () {
    var c1 = new cloud.Cloud({
      identityless: true,
      resourceAppid:'微信云托管所在的「小程序/公众号」appid', // 替换成自己的
      resourceEnv: "微信云托管环境ID", // 替换成自己的
    });
    await c1.init();

    const { socketTask } =  await c1.connectContainer({
      path: '/xxx', // 填入业务自定义路径和参数,根目录,就是 / 
      header: {
        'X-WX-SERVICE': 'xxx', // xxx中填入服务名称(微信云托管 - 服务管理 - 服务列表 - 服务名称)
      }
      // 其余参数同 wx.connectSocket
    });
    socketTask.onMessage(function (res) {
      console.log('【WEBSOCKET】', res.data)
    })
    socketTask.onOpen(function (res) {
      console.log('【WEBSOCKET】', '链接成功!')
      socketTask.send({
        data: '这是公众号H5消息'
      })
    })
    socketTask.onClose(function (res) {
      console.log('【WEBSOCKET】链接关闭!')
    })
  }
</script>