uni.connectSocket(OBJECT)
WebSocket 连接。
在各个小程序平台运行时,网络相关的 API 在使用前需要配置域名白名单。 OBJECT 参数说明 示例代码
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 参数中的一个。例如:
var socketTask = uni.connectSocket({ url: 'wss://www.example.com/socket', //仅为示例,并非真实接口地址。 complete: ()=> {}});Promise 封装 注意事项
超时时间可以统一在manifest.json中配置 networkTimeout。ArrayBuffer类型的数据收发,可以使用 plus-websocket 插件替代。weex的v8引擎运行,所有vue页面的js都是在同一个weex的js环境中运行。目前weex限制一个js环境中只支持一个websocket连接,所以导致所有vue页面只能使用一个websocket连接。临时解决方案: ```- 回退使用非自定义组件模式(不推荐)- 多个 websocket 在独立的 nvue 页面中使用- 使用 plus-websocket 插件替代
uni.connectSocket({ url: ‘wss://www.example.com/socket’});uni.onSocketOpen(function (res) { console.log(‘WebSocket连接已打开!’);});
`weex` 的限制,以支持多个 `websocket` 连接### uni.onSocketOpen(CALLBACK)监听WebSocket连接打开事件。**平台差异说明****CALLBACK 返回参数****示例代码:**uni.connectSocket({ url: ‘wss://www.example.com/socket’});uni.onSocketOpen(function (res) { console.log(‘WebSocket连接已打开!’);});uni.onSocketError(function (res) { console.log(‘WebSocket连接打开失败,请检查!’);});
### uni.onSocketError(CALLBACK)监听WebSocket错误。**平台差异说明****示例代码**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); }}
### uni.sendSocketMessage(OBJECT)uni.connectSocket,并在 uni.onSocketOpen 回调之后才能发送。**平台差异说明****OBJECT 参数说明:****示例代码**uni.connectSocket({ url: ‘wss://www.example.com/socket’});uni.onSocketMessage(function (res) { console.log(‘收到服务器内容:’ + res.data);});
### uni.onSocketMessage(CALLBACK)监听WebSocket接受到服务器的消息事件。**平台差异说明****CALLBACK 返回参数****示例代码:**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 已关闭!’);}); ```
### uni.closeSocket(OBJECT)关闭 WebSocket 连接。**平台差异说明****OBJECT 参数说明**### uni.onSocketClose(CALLBACK)监听WebSocket关闭。**平台差异说明**
在 GitHub 上编辑此页面!
