您好,小程序模板欢迎您。
小程序模板
当前位置 : 首页> 小程序教程> 微信小程序实现 WebSocket 时,onSocketOpen 事件的具体使用方法是什么?

微信小程序实现 WebSocket 时,onSocketOpen 事件的具体使用方法是什么?

你想了解微信小程序中 `wx.onSocketOpen` 事件的具体使用方法,包括它的作用、调用方式和注意事项。


### `wx.onSocketOpen` 的核心使用方法


#### 1. 核心概念与作用

`wx.onSocketOpen` 是微信小程序提供的**WebSocket 连接打开事件监听器**,用于监听 `wx.connectSocket` 发起的连接成功建立的时刻。只有当该事件触发后,WebSocket 连接才真正可用,此时才能通过 `wx.sendSocketMessage` 发送消息。


#### 2. 基本语法

```javascript

wx.onSocketOpen(callback(res))

```

- **参数**:`callback(res)` 是连接成功时的回调函数

- **回调参数 `res`**:一个对象,包含连接成功的相关信息(目前主要包含 `isConnected: true` 标识)


#### 3. 正确使用步骤

`wx.onSocketOpen` 必须在 `wx.connectSocket` 之后调用(或同时),因为连接建立是异步过程,需提前监听才能捕获成功事件。


#### 4. 完整使用示例

```javascript

// 1. 发起 WebSocket 连接请求

wx.connectSocket({

  url: 'wss://your-server.com/ws', // 后端 WebSocket 服务地址

  header: {

    'token': 'user-token-123' // 自定义请求头

  }

});


// 2. 监听连接成功事件(关键)

wx.onSocketOpen((res) => {

  console.log('WebSocket 连接已成功打开', res);

  console.log('连接状态:', res.isConnected); // 输出 true


  // 连接成功后,才能发送消息

  wx.sendSocketMessage({

    data: JSON.stringify({

      type: 'init',

      content: '小程序已连接'

    }),

    success: () => {

      console.log('消息发送成功');

    },

    fail: (err) => {

      console.error('消息发送失败', err);

    }

  });

});


// 3. 搭配其他事件监听(完整流程)

wx.onSocketError((err) => {

  console.error('WebSocket 连接失败', err);

});


wx.onSocketClose((res) => {

  console.log('WebSocket 连接已关闭', res);

});

```


#### 5. 关键注意事项

- **调用时机**:需在 `wx.connectSocket` 之后调用,若先调用 `wx.connectSocket` 再监听,可能错过事件(建议同时调用)。

- **多次监听**:若多次调用 `wx.onSocketOpen`,会添加多个回调函数,触发时依次执行(如需移除,可使用 `wx.offSocketOpen`)。

- **作用域**:回调函数内的 `this` 指向全局,若需访问页面实例,需提前保存 `this` 或使用箭头函数。

- **连接状态**:仅当 `onSocketOpen` 触发后,`wx.sendSocketMessage` 才能正常使用,否则会报错。


### 总结

1. `wx.onSocketOpen` 用于监听 WebSocket 连接成功事件,是发送消息的前提。

2. 需在 `wx.connectSocket` 之后调用,回调函数中可执行消息发送等后续操作。

3. 需搭配 `wx.onSocketError`/`wx.onSocketClose` 监听异常和关闭事件,保证流程完整性。


联系客服 意见反馈

签到成功!

已连续签到1天,签到3天将获得积分VIP1天

知道了