收藏本站
查看: 278|回复: 0

WebSocket 连接参数及代码示例

[复制链接]
发表于 2018-2-9 14:14:12 | 显示全部楼层 |阅读模式
wx.connectSocket(OBJECT)
创建一个 WebSocket 连接。使用前请先阅读说明
基础库 1.7.0 之前,一个微信小程序同时只能有一个 WebSocket 连接,如果当前已存在一个 WebSocket 连接,会自动关闭该连接,并重新创建一个 WebSocket 连接。基础库版本 1.7.0 及以后,支持存在多个 WebSokcet 连接,每次成功调用 wx.connectSocket 会返回一个新的 SocketTask
OBJECT参数说明:
参数
类型
必填
说明
最低版本

urlString是开发者服务器接口地址,必须是 wss 协议,且域名必须是后台配置的合法域名
headerObject否HTTP Header , header 中不能设置 Referer
methodString否默认是GET,有效值:OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT
protocolsStringArray否子协议数组1.4.0
successFunction否接口调用成功的回调函数
failFunction否接口调用失败的回调函数
completeFunction否接口调用结束的回调函数(调用成功、失败都会执行)
示例代码:
  1. wx.connectSocket({
  2.   url: 'wss://example.qq.com',
  3.   data:{
  4.     x: '',
  5.     y: ''
  6.   },
  7.   header:{
  8.     'content-type': 'application/json'
  9.   },
  10.   protocols: ['protocol1'],
  11.   method:"GET"
  12. })
复制代码
wx.onSocketOpen(CALLBACK)
监听WebSocket连接打开事件。
示例代码:
  1. wx.connectSocket({
  2.   url: 'test.php'
  3. })
  4. wx.onSocketOpen(function(res) {
  5.   console.log('WebSocket连接已打开!')
  6. })
复制代码
wx.onSocketError(CALLBACK)
监听WebSocket错误。
示例代码:
  1. wx.connectSocket({
  2.   url: 'test.php'
  3. })
  4. wx.onSocketOpen(function(res){
  5.   console.log('WebSocket连接已打开!')
  6. })
  7. wx.onSocketError(function(res){
  8.   console.log('WebSocket连接打开失败,请检查!')
  9. })
复制代码
wx.sendSocketMessage(OBJECT)
通过 WebSocket 连接发送数据,需要先 wx.connectSocket,并在 wx.onSocketOpen 回调之后才能发送。
OBJECT参数说明:
参数
类型
必填
说明

dataString/ArrayBuffer是需要发送的内容
successFunction否接口调用成功的回调函数
failFunction否接口调用失败的回调函数
completeFunction否接口调用结束的回调函数(调用成功、失败都会执行)
示例代码:
  1. var socketOpen = false
  2. var socketMsgQueue = []
  3. wx.connectSocket({
  4.   url: 'test.php'
  5. })

  6. wx.onSocketOpen(function(res) {
  7.   socketOpen = true
  8.   for (var i = 0; i < socketMsgQueue.length; i++){
  9.      sendSocketMessage(socketMsgQueue[i])
  10.   }
  11.   socketMsgQueue = []
  12. })

  13. function sendSocketMessage(msg) {
  14.   if (socketOpen) {
  15.     wx.sendSocketMessage({
  16.       data:msg
  17.     })
  18.   } else {
  19.      socketMsgQueue.push(msg)
  20.   }
  21. }
复制代码
wx.onSocketMessage(CALLBACK)
监听WebSocket接受到服务器的消息事件。
CALLBACK返回参数:
参数
类型
说明

dataString/ArrayBuffer服务器返回的消息
示例代码:
  1. wx.connectSocket({
  2.   url: 'test.php'
  3. })

  4. wx.onSocketMessage(function(res) {
  5.   console.log('收到服务器内容:' + res.data)
  6. })
复制代码
wx.closeSocket(OBJECT)
关闭 WebSocket 连接。
OBJECT参数说明:
参数
类型
必填
说明
最低版本

codeNumber否一个数字值表示关闭连接的状态号,表示连接被关闭的原因。如果这个参数没有被指定,默认的取值是1000 (表示正常连接关闭)1.4.0
reasonString否一个可读的字符串,表示连接被关闭的原因。这个字符串必须是不长于123字节的UTF-8 文本(不是字符)1.4.0
successFunction否接口调用成功的回调函数
failFunction否接口调用失败的回调函数
completeFunction否接口调用结束的回调函数(调用成功、失败都会执行)wx.onSocketClose(CALLBACK)
监听WebSocket关闭。
  1. wx.connectSocket({
  2.   url: 'test.php'
  3. })

  4. //注意这里有时序问题,
  5. //如果 wx.connectSocket 还没回调 wx.onSocketOpen,而先调用 wx.closeSocket,那么就做不到关闭 WebSocket 的目的。
  6. //必须在 WebSocket 打开期间调用 wx.closeSocket 才能关闭。
  7. wx.onSocketOpen(function() {
  8.   wx.closeSocket()
  9. })

  10. wx.onSocketClose(function(res) {
  11.   console.log('WebSocket 已关闭!')
  12. })
复制代码
返回值:
基础库 1.7.0 开始支持,低版本需做兼容处理
返回一个 SocketTask
Bug & Tip
  • tip: 基础库 1.7.0 开始,支持同时存在 2 条 WebSocket 连接

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表