美文网首页
2018-07-25 IO类H5小游戏Websocket使用二进

2018-07-25 IO类H5小游戏Websocket使用二进

作者: 编程改变世界 | 来源:发表于2018-07-25 16:35 被阅读0次

    之前几个小游戏项目都是以JSON进行传输,这回做IO类游戏,同房间超过30人后客户端在运行一会后运行越来越慢,经各方面排查最终发现:使用JSON传输数据量传输导致数据量大增(每秒20K),从而影响了游戏的运行速度。于是着手将JSON改为二进制传输。

    服务器端用的是PHP的Workerman,这个开源框架十分好用,几个项目下来也非常稳定。 PHP有pack和unpack可作为二进制的封包和解包。但经过测试,发现服务器向客户端发送数据时总会导致客户端断线。由于开始并不知道是哪里引起的问题,所以排查了半天,后来终于发现是因为Workerman的默认设置而引起。

    Workerman默认的传输格式是UTF,也就是:

    $connection->websocketType = Websocket::BINARY_TYPE_BLOB;

    看了文档如下设置:

    $connection->websocketType = Websocket::BINARY_TYPE_ARRAYBUFFER;

    设置好后重启服务果然好了。

    我将游戏核心传输部分改为二进制数据传输,而90%的命令仍然以JSON传输,这样游戏的修改工作量大大降低,而且JSON确实也很好用。这样即解决了游戏过程大量的数据传输,又保留了大量JSON的易用性。

    相关文章

      网友评论

          本文标题:2018-07-25 IO类H5小游戏Websocket使用二进

          本文链接:https://www.haomeiwen.com/subject/lpzpmftx.html