最近实习中需要完成一个websocket的客户端,本来是很容易的一件事情,结果有非常多的坑。
-
服务端连不上去
这个本来是不可能的事情,结果我发现用nodejs和java写的客户端根本就连不上去,而js写的却在网页端倒是跑得很欢快。
报错信息是
Connect Error: Error: socket hang up
这个报错就比较诡异了,这个情况应该是被服务端拒绝了。
这样看起来我客户端没啥问题啊,三次握手后请求后被拒绝了,而web端没有被拒绝,那再对比一下http的请求头
这样比较看得出来,可能是服务端对origin进行了检查,在nodejs端加上origin这个字段后果然可以连得上了。 -
浏览器的websocket连接频繁断联
这个错误比较直观,抓包看了一下,是因为传递的数据中间有一些乱码,导致浏览器无法按照utf8解析而报错的,用reconnecting-websocket.js 很快就解决了。