【websocket js/ts】微信小游戏websocket使用

文档路径:wx.sendSocketMessage(Object object) | 微信开放文档

直接使用原生websocket接口也行,最终在微信环境下,还是调用的微信的接口,只不过多一些转换调用流程。

注意的问题是,微信只提供了发送和接收数据的接口,并没有提供设置数据格式的接口,所以他是按照你传入的数据,进行判断的。

比如发送接口例子:

let socketOpen = false
let socketMsgQueue = []
wx.connectSocket({
  url: 'test.php'
})

wx.onSocketOpen(function(res) {
  socketOpen = true
  for (let i = 0; i < socketMsgQueue.length; i++){
    sendSocketMessage(socketMsgQueue[i])
  }
  socketMsgQueue = []
})

function sendSocketMessage(msg) {
  if (socketOpen) {
    wx.sendSocketMessage({
      data:msg
    })
  } else {
    socketMsgQueue.push(msg)
  }
}

参数说明:

Object object

属性 类型 默认值 必填 说明
data string/ArrayBuffer 需要发送的内容
success function 接口调用成功的回调函数
fail function 接口调用失败的回调函数
complete function 接口调用结束的回调函数(调用成功、失败都会执行)

data只能是string和arraybuffer,对于uint8array这种就识别不了,需要转换一下,类似这样:

socket.send({ data: Uint8Array.from([8,31,18,5,2,3]).buffer })

调用原生接口也需要自己转换,否则,微信就直接当做text发送了。而且数据块大小为0。

猜你喜欢

转载自blog.csdn.net/sirria1/article/details/129028896