原生APK用 websocket和socketIO 协议打包的,是不是兼容性特差

有实际操作经验的来说下
我用websocket和socketio的,华为,oppo,魅族新点的机型一堆连接问题。。。手头没同类型的测试机,解决不了
故障率貌似非常高

你用的是TCP还是UDP,在线人数你是怎么管理的

。。。你去百度看看WebSocket是什么

肝了一整天,大致找到问题了,还是N年前的类似问题,一直没修复,C++不太熟,只能暂时改网络协议了

留下此贴方便后人。。。肯定还会有不少人遇到的

这个问题的表现看似有不确定性,而且是部分机型出问题。而且总出现在发包的地方,看上去就像封包没发出去

实际加日志对比会看到,封包的长度错乱,内容错乱了,长期稳定的服务端都会写容错代码忽略过去了

官方几年前有个回复是注释掉了 Websocket 库的压缩。原生的我不知道,js的 Websocket,当数据包大于1kb时,会自动启用 gzip 压缩。而压缩出的字符串可以说就是乱码,一些乱码导致了发送问题。具体怎么改我也不知道,我只知道从几十年前的C写各种转码就很头大了,高级语言才慢慢有个成熟的转码库,或者utf8一统天下

但是这个问题不光是压缩产生的,正常的,无乱码的数据包也会有问题。。。最烦的就是玩家昵称,一个奇葩的昵称就可以导致。。还有arrayBuffer, protobuf,自定义字节码等。。。都有可能会出这种情况。只是概率大小问题。

我现在用的最傻逼的做法,是把包体全换成了数字数组。。。真浪费流量

1.9以后的SocketIO libWebsocket 虽然有点变量名的更新,但是代码变动不大,依然是 启用压缩被注释的状态。没人彻底去修复这个问题