之前做一个项目需要手机与内网机器通信
由于手机端由h5完成,所以采用websocket的方式
在电脑上调试时一切正常
用手机访问时却在握手时中断连接,握手不成功
后来研究了一下握手协议
如下
("HTTP/1.1 101 Switching Protocols\r\n");
("Upgrade: websocket\r\n");
("Connection: Upgrade\r\n");
("Server:beetle websocket server\r\n");
("Access-Control-Allow-Credentials:true\r\n");
("Accept-Encoding: gzip, deflate, sdch\r\n");
("Accept-Language: zh-CN,zh;q=0.8\r\n");
("Access-Control-Allow-Headers:content-type\r\n");
("Sec-WebSocket-Accept:" + key + "\r\n");
在这里也没有发现问题...
为了实现一个猜测,在最后一条加了一个\r
最后变成
("Sec-WebSocket-Accept:" + key + "\r\n\r");
然后就握手成功,通信OK
问题到这里就解决了。。。。 个人猜测可能是手机端兼容上的问题。 既然要求在最后一定要加\r\n,那也许是手机端还需要有一个结束标识?