你好,请教下 链接不上的问题

yuanfang

我socket服务已经启动成功。但是html页面用websocket链接 就会链接不上出现WebSocket connection to 'ws://127.0.0.1:2347/' failed: Error during WebSocket handshake: net::ERR_INVALID_HTTP_RESPONSE

14178 3 0
3个回答

walkor

客户端使用的通讯协议与服务端不一致。 例如服务端是http通讯协议,客户端使用websocket通讯协议访问是无法连接的。如果客户端用websocket协议连接,那么服务端必须也是websocket协议。如果服务端是http协议的服务,那么客户端必须用http协议访问。

这里的原理类似如果你要和英国人交流,那么要使用英语。如果要和日本人交流,那么要使用日语。这里的语言就类似通讯协议,双方(客户端和服务端)必须使用相同的语言才能交流,否则无法通讯。

通讯协议不一致导致的常见的报错有:

WebSocket connection to 'ws://xxx.com:xx/' failed: Error during WebSocket handshake: Unexpected response code: xxx

WebSocket connection to 'ws://xxx.com:xx/' failed: Error during WebSocket handshake: net::ERR_INVALID_HTTP_RESPONSE

解决办法: 从上面两条报错看出,客户端使用的是ws连接是websocket协议。服务端也需要是
websocket协议才行,服务端监听部分代码需要指定websocket协议才能通讯,例如下面这样

如果是gatewayWorker,监听部分代码类似

// websocket协议,这样客户端才能用ws://...来连。xxxx为端口不用改动
$gateway = new Gateway('websocket://0.0.0.0:xxxx');
如果是Workerman则是

// websocket协议,这样客户端才能用ws://...来连。xxxx为端口不用改动
$worker = new Worker('websocket://0.0.0.0:xxxx');

  • 暂无评论
yuanfang

哦 ,那我试试 我服务端是text

  • 暂无评论
yuanfang

对了。谢谢。还有 就是哥子,同意我入群啊!

  • 暂无评论
年代过于久远,无法发表回答
🔝