创建一个 websocket 连接;一个微信小程序同时只能有一个 websocket 连接,如果当前已存在一个 websocket 连接,会自动关闭该连接,并重新创建一个 websocket 连接。
object参数说明:
参数 | 类型 | 必填 | 说明 | 最低版本 |
---|---|---|---|---|
url | string | 是 | 开发者服务器接口地址,必须是 wss 协议,且域名必须是后台配置的合法域名 | |
data | object | 否 | 请求的数据 | |
header | object | 否 | http header , header 中不能设置 referer | |
method | string | 否 | 默认是get,有效值: options, get, head, post, put, delete, trace, connect | |
protocols | stringarray | 否 | 子协议数组 | 1.4.0 |
success | function | 否 | 接口调用成功的回调函数 | |
fail | function | 否 | 接口调用失败的回调函数 | |
complete | function | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) |
wx.connectsocket({
url: 'test.php',
data:{
x: '',
y: ''
},
header:{
'content-type': 'application/json'
},
protocols: ['protocol1'],
method:"get"
})
监听websocket连接打开事件。
示例代码:
wx.connectsocket({
url: 'test.php'
})
wx.onsocketopen(function(res) {
console.log('websocket连接已打开!')
})
监听websocket错误。
示例代码:
wx.connectsocket({
url: 'test.php'
})
wx.onsocketopen(function(res){
console.log('websocket连接已打开!')
})
wx.onsocketerror(function(res){
console.log('websocket连接打开失败,请检查!')
})
通过 websocket 连接发送数据,需要先 wx.connectsocket,并在 wx.onsocketopen 回调之后才能发送。
object参数说明:
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
data | string/arraybuffer | 是 | 需要发送的内容 |
success | function | 否 | 接口调用成功的回调函数 |
fail | function | 否 | 接口调用失败的回调函数 |
complete | function | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) |
示例代码:
var socketopen = false
var socketmsgqueue = []
wx.connectsocket({
url: 'test.php'
})
wx.onsocketopen(function(res) {
socketopen = true
for (var i = 0; i < socketmsgqueue.length; i++){
sendsocketmessage(socketmsgqueue[i])
}
socketmsgqueue = []
})
function sendsocketmessage(msg) {
if (socketopen) {
wx.sendsocketmessage({
data:msg
})
} else {
socketmsgqueue.push(msg)
}
}
监听websocket接受到服务器的消息事件。
callback返回参数:
参数 | 类型 | 说明 |
---|---|---|
data | string/arraybuffer | 服务器返回的消息 |
示例代码:
wx.connectsocket({
url: 'test.php'
})
wx.onsocketmessage(function(res) {
console.log('收到服务器内容:' + res.data)
})
关闭websocket连接。
参数 | 类型 | 必填 | 说明 | 最低版本 |
---|---|---|---|---|
code | number | 否 | 一个数字值表示关闭连接的状态号,表示连接被关闭的原因。如果这个参数没有被指定,默认的取值是1000 (表示正常连接关闭) | 1.4.0 |
reason | string | 否 | 一个可读的字符串,表示连接被关闭的原因。这个字符串必须是不长于123字节的utf-8 文本(不是字符) | 1.4.0 |
success | function | 否 | 接口调用成功的回调函数 | |
fail | function | 否 | 接口调用失败的回调函数 | |
complete | function | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) |
监听websocket关闭。
wx.connectsocket({
url: 'test.php'
})
//注意这里有时序问题,
//如果 wx.connectsocket 还没回调 wx.onsocketopen,而先调用 wx.closesocket,那么就做不到关闭 websocket 的目的。
//必须在 websocket 打开期间调用 wx.closesocket 才能关闭。
wx.onsocketopen(function() {
wx.closesocket()
})
wx.onsocketclose(function(res) {
console.log('websocket 已关闭!')
})
返回值:
基础库 1.7.0 开始支持,低版本需做兼容处理
返回一个 sockettask。
tip
: createsocket 链接默认和最大超时时间都是 60stip
: 网络请求的 referer 是不可以设置的,格式固定为 https://servicewechat.com/{appid}/{version}/page-frame.html,其中{appid}
为小程序的 appid,{version}
为小程序的版本号,版本号为 0 表示为开发版。基础库 1.7.0 开始支持,低版本需做兼容处理
websocket 任务,可通过 wx.connectsocket() 接口创建返回。
通过 websocket 连接发送数据。
object参数说明:
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
data | string/arraybuffer | 是 | 需要发送的内容 |
success | function | 否 | 接口调用成功的回调函数 |
fail | function | 否 | 接口调用失败的回调函数 |
complete | function | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) |
关闭 websocket 连接。
object参数说明:
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
code | number | 否 | 一个数字值表示关闭连接的状态号,表示连接被关闭的原因。如果这个参数没有被指定,默认的取值是1000 (表示正常连接关闭) |
reason | string | 否 | 一个可读的字符串,表示连接被关闭的原因。这个字符串必须是不长于123字节的utf-8 文本(不是字符) |
success | function | 否 | 接口调用成功的回调函数 |
fail | function | 否 | 接口调用失败的回调函数 |
complete | function | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) |
监听 websocket 连接打开事件。
监听 websocket 连接关闭事件。
监听 websocket 错误。
callback返回参数:
参数 | 类型 | 说明 |
---|---|---|
errmsg | string | 错误信息 |
监听websocket接受到服务器的消息事件。
callback返回参数:
参数 | 类型 | 说明 |
---|---|---|
data | string/arraybuffer | 服务器返回的消息 |