export default {
data() {
return {
title: 'Hello',
content: ''
}
},
onLoad() {
// 注意这里有时序问题,
// 如果 uni.connectSocket 还没回调 uni.onSocketOpen,而先调用 uni.closeSocket,那么就做不到关闭 WebSocket 的目的。
// 必须在 WebSocket 打开期间调用 uni.closeSocket 才能关闭。
uni.onSocketOpen(function(e) {
console.log('打开', e);
uni.sendSocketMessage({
data: JSON.stringify({
"history": [],
"input": "11"
}),
complete(res) {
console.log('发送消息成功', res);
}
})
});
uni.onSocketClose(function(res) {
console.log('WebSocket 已关闭!', res);
uni.closeSocket({
code: 1000
})
});
uni.onSocketMessage(function(res) {
console.log('收到服务器内容:' + res.data);
const data = JSON.parse(res.data)
if (data.code === 10010) {
uni.closeSocket({
code: 1000
})
}
});
uni.onSocketError(function(res) {
console.log('WebSocket连接打开失败,请检查!', res);
});
},
methods: {
send() {
uni.connectSocket({
url: 'ws://xxx',
complete(res) {
console.log('res',res);
},
header: {
'Authorization': 'xxx'
}
});
}
}
}

- 发布:2024-01-10 15:58
- 更新:2024-01-10 15:58
- 阅读:880
产品分类: uniapp/App
PC开发环境操作系统: Mac
PC开发环境操作系统版本号: 12.6.1
HBuilderX类型: 正式
HBuilderX版本号: 3.99
手机系统: iOS
手机系统版本号: iOS 17
手机厂商: 苹果
手机机型: 12promax
页面类型: vue
vue版本: vue3
打包方式: 云端
项目创建方式: HBuilderX
示例代码:
操作步骤:
客户端发送消息,有几次会出现这个错误。
客户端发送消息,有几次会出现这个错误。
预期结果:
完整接收服务端传过来的消息,客户端正常关闭。
完整接收服务端传过来的消息,客户端正常关闭。
实际结果:
触发了服务端关闭事件,返回信息为:
{
"code": 1001,
"reason": "Stream end encountered"
}
触发了服务端关闭事件,返回信息为:
{
"code": 1001,
"reason": "Stream end encountered"
}
bug描述:
使用socketapi访问websocket的时候,抓包显示服务端把信息都全部返回后,客户端有时可以完整接收服务端的消息,有时候会未接收完服务端的消息,就会触发服务端关闭事件,返回1001状态码,错误信息为Stream end encountered。
{
"code": 1001,
"reason": "Stream end encountered"
}
