ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
## uni.connectSocket(OBJECT) **创建一个 WebSocket 连接。** **OBJECT 参数说明:** ![](https://box.kancloud.cn/35a6f4ca7d7e359fb5f75eaf86a4fbe0_866x321.png) **示例代码:** ``` uni.connectSocket({ url: 'wss://www.example.com/socket', data: { x: '', y: '' }, header: { 'content-type': 'application/json' }, protocols: ['protocol1'], method: "GET" }); ``` ## uni.onSocketOpen(CALLBACK) 监听WebSocket连接打开事件。 **callback 回调函数:** **参数** ![](https://box.kancloud.cn/56384b62ae3a0ef5f2f37fe9197d80d5_863x93.png) **示例代码:** ``` uni.connectSocket({ url: 'wss://www.example.com/socket' }); uni.onSocketOpen(function (res) { console.log('WebSocket连接已打开!'); }); ``` ## uni.onSocketError(CALLBACK) 监听WebSocket错误。 **示例代码:** ``` uni.connectSocket({ url: 'wss://www.example.com/socket' }); uni.onSocketOpen(function (res) { console.log('WebSocket连接已打开!'); }); uni.onSocketError(function (res) { console.log('WebSocket连接打开失败,请检查!'); }); ``` ## uni.sendSocketMessage(OBJECT) 通过 WebSocket 连接发送数据,需要先 uni.connectSocket,并在 uni.onSocketOpen 回调之后才能发送。 **OBJECT 参数说明:** ![](https://box.kancloud.cn/68d59452d78744200d4522dc2df7a43e_858x205.png) **示例代码:** ``` 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.onSocketMessage(CALLBACK) 监听WebSocket接受到服务器的消息事件。 **CALLBACK 返回参数:** ![](https://box.kancloud.cn/221e3116a0c00af4d92c526ee0f2717a_862x90.png) 示例代码: ``` uni.connectSocket({ url: 'wss://www.example.com/socket' }); uni.onSocketMessage(function (res) { console.log('收到服务器内容:' + res.data); }); ``` **uni.closeSocket(OBJECT)** **关闭 WebSocket 连接**。 ![](https://box.kancloud.cn/30080822916fc7a43bc4c44ea3cddf89_868x314.png) ## uni.onSocketClose(CALLBACK) **监听WebSocket关闭。** ``` 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 已关闭!'); }); ``` **返回值:** 返回一个 SocketTask。