uni.connectSocket(OBJECT)

WebSocket 连接。

在各个小程序平台运行时,网络相关的 API 在使用前需要配置域名白名单。 OBJECT 参数说明 示例代码

  1. uni.connectSocket({ url: 'wss://www.example.com/socket', data() { return { x: '', y: '' }; }, header: { 'content-type': 'application/json' }, protocols: ['protocol1'], method: 'GET'});

返回值 socketTask 对象,需要至少传入 success / fail / complete 参数中的一个。例如:

  1. var socketTask = uni.connectSocket({ url: 'wss://www.example.com/socket', //仅为示例,并非真实接口地址。 complete: ()=> {}});

Promise 封装 注意事项

  • 超时时间 可以统一在 manifest.json 中配置 networkTimeout。
  • ArrayBuffer 类型的数据收发,可以使用 plus-websocket 插件替代。
  • weexv8 引擎运行,所有 vue 页面的 js 都是在同一个 weexjs 环境中运行。目前 weex 限制一个 js 环境中只支持一个 websocket 连接,所以导致所有 vue 页面只能使用一个 websocket 连接。临时解决方案: ```
  • 回退使用非自定义组件模式(不推荐)- 多个 websocket 在独立的 nvue 页面中使用- 使用 plus-websocket 插件替代
    1. `weex` 的限制,以支持多个 `websocket` 连接
    2. ### uni.onSocketOpen(CALLBACK)
    3. 监听WebSocket连接打开事件。
    4. **平台差异说明**
    5. **CALLBACK 返回参数**
    6. **示例代码:**
    uni.connectSocket({ url: ‘wss://www.example.com/socket’});uni.onSocketOpen(function (res) { console.log(‘WebSocket连接已打开!’);});
    1. ### uni.onSocketError(CALLBACK)
    2. 监听WebSocket错误。
    3. **平台差异说明**
    4. **示例代码**
    uni.connectSocket({ url: ‘wss://www.example.com/socket’});uni.onSocketOpen(function (res) { console.log(‘WebSocket连接已打开!’);});uni.onSocketError(function (res) { console.log(‘WebSocket连接打开失败,请检查!’);});
    1. ### uni.sendSocketMessage(OBJECT)
    2. uni.connectSocket,并在 uni.onSocketOpen 回调之后才能发送。
    3. **平台差异说明**
    4. **OBJECT 参数说明:**
    5. **示例代码**
    var socketOpen = false;var socketMsgQueue = [];uni.connectSocket({ url: ‘wss://www.example.com/socket’});uni.onSocketOpen(function (res) { socketOpen = true; for (var i = 0; i < socketMsgQueue.length; i++) { sendSocketMessage(socketMsgQueue[i]); } socketMsgQueue = [];});function sendSocketMessage(msg) { if (socketOpen) { uni.sendSocketMessage({ data: msg }); } else { socketMsgQueue.push(msg); }}
    1. ### uni.onSocketMessage(CALLBACK)
    2. 监听WebSocket接受到服务器的消息事件。
    3. **平台差异说明**
    4. **CALLBACK 返回参数**
    5. **示例代码:**
    uni.connectSocket({ url: ‘wss://www.example.com/socket’});uni.onSocketMessage(function (res) { console.log(‘收到服务器内容:’ + res.data);});
    1. ### uni.closeSocket(OBJECT)
    2. 关闭 WebSocket 连接。
    3. **平台差异说明**
    4. **OBJECT 参数说明**
    5. ### uni.onSocketClose(CALLBACK)
    6. 监听WebSocket关闭。
    7. **平台差异说明**
    uni.connectSocket({ url: ‘wss://www.example.com/socket’});// 注意这里有时序问题,// 如果 uni.connectSocket 还没回调 uni.onSocketOpen,而先调用 uni.closeSocket,那么就做不到关闭 WebSocket 的目的。// 必须在 WebSocket 打开期间调用 uni.closeSocket 才能关闭。uni.onSocketOpen(function () { uni.closeSocket();});uni.onSocketClose(function (res) { console.log(‘WebSocket 已关闭!’);}); ```

在 GitHub 上编辑此页面!