# WebSocket-公众号 H5

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

## 能力使用

在公众号 H5 网页中使用如下的代码：

```js
// 初始化 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](/miniprogram/dev/api/network/websocket/SocketTask.md) | socket 对象，和 [wx.connectSocket](/miniprogram/dev/api/network/websocket/wx.connectSocket.md) 返回值一样 |  |

## 代码示例

在网页脚本中替换如下代码：

``` 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>
```
