关于sendSocketMessage发送到服务端的乱码问题
发布于 5 年前 作者 yang86 6949 次浏览 来自 问答

调用的是同一个方法,但在服务端有时候就会收到乱码,有时候正常。但是就是因为乱码问题,导致解析json会解析不出来,进而导致服务端程序的一些处理逻辑出现问题,这是什么原因呢?

正常的数据:

不正常的数据:

小程序代码:

5 回复

1楼的问题解决了吗?

我也遇到类似问题,再贴一次:

在使用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

是否跟你发送的数据编码有关系?

你们是做什么的

做一个有关麻将计分和排名的小程序,在计算胡牌过程中需要其他玩家确认,所以要用到websocket。玩牌的场景是线下的,胡牌的计算是通过小程序,而且有一套很复杂的规则

我谨慎怀疑是不是sendSocketMessage内部没有对这些数据对象本身进行初始化,才导致json格式的字符串后面跟随了一堆不知所云的乱码?

快来人啊。。。。这个坑很要命啊。

我在浏览器上用javascript模拟websocket发送数据都是没有问题的。所以肯定不是服务端的问题。

回到顶部