3599关注11329浏览
开发工具版本:1.02.1805181
需求简述:使用小程序扫描电脑浏览器页面中的二维码,小程序通过WebSocket发送数据到我司的服务器。启动远程调试后,第一次测试都OK。但稍等,再次测试失败。我尝试了传统的wx.onSocketOpen写法,也试了SocketTask写法,都无法做到失败重连。请大神协助,谢谢!
// websocket.js
const app = getApp();
let url = 'ws://10.13.18.151:9092';
export const connect = function (callbackFunc) { // 定义一个方法
var SocketTask = wx.connectSocket({
url: url,
success: function () {
console.log('wx.connectSocket成功');
},
fail: function(err) {
if (err) {
console.log('###### wx.connectSocket连接失败', err)
app.globalData.socketConnectFail = true // 定义一个全局变量,当链接失败时改变变量的值
}
},
complete: function () {
console.log('wx.connectSocket完成');
}
})
SocketTask.onOpen(function (res) { // 监听WebSocket连接打开事件。
console.log('进入wx.onSocketOpen()');
SocketTask.send({ // 通过 WebSocket 连接发送数据,需要先 wx.connectSocket,并在 wx.onSocketOpen 回调之后才能发送。
data: '9999999999999999999999999999999999', // 用于订阅的参数,视具体情况而定
success(data) {
console.log('wx.sendSocketMessage成功:', data.errMsg)
},
fail(err) {
console.log('wx.sendSocketMessage失败', err)
console.dir(err);
}
})
})
SocketTask.onMessage(function (res) { // 监听WebSocket接受到服务器的消息事件。
console.log('WebSocket接收到消息:', res);
callbackFunc(res.data); // 将接收到的消息进行回调,如果是ArryBuffer,需要进行转换
})
SocketTask.onError(function (res) { // 监听WebSocket错误。
console.log('###### wx.onSocketError');
app.globalData.socketConnectFail = true // 定义一个全局变量,当链接失败时改变变量的值
})
<
-
至过去的我
2044人对此回答表示赞同
我是未来的你,你现在是不是在年找寻小程序答案。你不要感觉诧异,给你来信原因,就是让你不在后悔。今天去学习如何推广小程序,相信......点击查看更多> -
Jasper
11人对此回答表示赞同
我看API不是必须是SSL的wss吗协议吗?居然第一次可以连上。bug
展开111回复分享发布于 6年前评论(1)
收起评论
-
Madison
10人对此回答表示赞同
我也遇到这个问题
展开100回复分享发布于 6年前评论(0)
收起评论
本机开发可以暂时不wss。