美文网首页
websocket长文本接收解析

websocket长文本接收解析

作者: 小禾才露尖尖角_ | 来源:发表于2018-06-03 15:25 被阅读0次

          前些天,在项目测试时遇到一个bug,即IOS客户端传输给服务端数据时,时而成功,时而失败,并导致客户端与服务端断开连接,不接收任何消息。后来打印 websocket的关闭原因,才知道是传输的消息过长导致。

          通过在网上查找资料,才知道websocket的文本消息传输,协议允许的长度不超过127,那么,对于超出范围的消息又怎么进行传输呢?对此,网友给出的答案,采用自定义协议、消息分片发送、改websocket为长连接或轮训;思量下来,还是决定采用消息分片处理的方式来处理消息。

        首先,我们要自定义一个消息处理器,实现MessageHandler.Partial接口,MessageHandler接口中有两个接口,一个是Partial,另一个是Whole接口,Partial用于接收部分消息,Whole用于一次性接收一条完整的消息。实现代码如下:

    代码片段

        上面代码中的last参数是一个结束传输的标识,如果消息是最后一条消息,则last为true,当客户端分片发送消息时,服务端接收消息会不断的调用 onMassege方法。另外,当自定义的消息处理器完成后,我们还需要对该处理器在session中注册,即在@OnOpen修饰的方法中添加:             session.addMessageHandler(new LangTextHandle(session,serial));

    鉴于本人文笔有限,请多多包涵,如有需要查询更详细的资料原文资料,请移步此处

    相关文章

      网友评论

          本文标题:websocket长文本接收解析

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