关于websocket的onSocketClose
发布于 6 年前 作者 gang91 1270 次浏览 来自 问答

onSocketClose是用于监听websocket连接断开事件的。但是我很好奇,在没有主动调用closeSocket而监听到websocket断开了的时候,为什么在这前面没有去自动调用closeSocket方法?至少是不是可以将websocket的一些状态重置一下,也不至于监听到了被动断开websocket时,还需要小程序开发者调用一下closeSocket,才能让websocket再次connect,否则会提示此连接还未关闭。

4 回复

是不是这个问题:

如果不显式的调tunnel.close(),是不会回调业务服务器端的onSocketClose()?

现在每隔一段时间会互相发ping pong,但如果客户端如果失联了,没法在服务器主动清理现场。

你好,感谢反馈,在开发工具中websocket自动断开,未重置连接状态。我们会在后续版本中进行修复,敬请关注。

我这边发送到服务端的json数据也有时候会在最后面有乱码,但不会总有,是偶尔,我也很奇怪,好在这些乱码出现在json结束的大括号后面,不影响解析json数据

在使用websocket发送jason数据时,打印的日志中jason数据是完整的。但服务器收到的jason数据在最后几个字节却是乱码导致解析失败。用JMeter压测工具测试服务器发送同样的数据一致运行良好。不知是不是微信小程序的websocket实现在发送用户数据的时候进行了什么过滤或编码?

微信小程序端:

wx.sendSocketMessage({

data:msg

});

console.log('msg sent: ’ + msg);//这里的信息是正常的

显示:{“TerminalType”:2,“TerminalId”:0,“TimeStamp”:0,“RequestedTerminalId”:1,“DataType”:1}

服务器端(使用了rapidjson1.1.0):

服务器开始的时候正常,收几个包后就异常,接收的数据长度是对的,但信息却成了:

pay_load:{“TerminalType”:2,“TerminalId”:0,“TimeStamp”:0,“RequestedTerminalId”:1Bm▒D.▒\*▒_2

回到顶部