今日接到一个需求,需要用websocket进行人脸核验功能。代码编辑完测试阶段发现,PC端验证和安卓手机验证都没问题,可以正常传输图片到后端,后端也能正常返回验证数据。在iphone手机上发现websocket链接开启后会自己断开,然后重连,然后又断开。

后端也没有断连详细信息,那就只能前端自己抓一下断连的详细信息。

websocket断连报错
websocket断连报错

通过alert打印websocket的code和reason发现居然是发送到后端的图片数据太大了。图片数据是转成base64编码再转给后端。测试发现一张120kb的图片转成base64有120kb大小。

所以需要后端在web.xml中设置(注意单位为byte):

<context-param>  
    <param-name>org.apache.tomcat.websocket.textBufferSize</param-name>  
    <param-value>5242800</param-value>  
</context-param>  

通过以上设置,就可以向服务器传送长字节数据了。