服务器 websocket 连不上显示这个

爱喝可乐的猫

400 Bad Request
Sec-WebSocket-Key not found.
This is a WebSocket service and can not be accessed via HTTP.
See http://wiki.workerman.net/Error1 for detail.

5040 1 0
1个回答

keytehu

我看到报错信息里的url http://wiki.workerman.net/Error1 已经说了是什么问题了。我帮你贴下。

错误原因
出现这个错误说明你用http协议去访问了websocket协议的服务。
开发者要注意,客户端使用的应用层协议要与服务端的应用层协议相同,也就是服务端是什么协议,客户端就使用什么协议。
如果协议不对应就会出现类似这种拒绝通讯甚至出错的情况。
这个道理就像在浏览器地址栏里访问数据库的ip:3306端口一样,你不会指望数据库真的会给你返回什么有用的信息吧?

正确做法
正确的做法应该是建立一个websocket协议的链接,利用websocket协议与workerman的websocket协议服务通讯。 如果客户端是浏览器,可以利用js建立websocket链接,代码类似这样:

// 假设服务端ip为127.0.0.1,端口为2346
ws = new WebSocket("ws://127.0.0.1:2346");
ws.onopen = function() {
    alert("连接成功");
    ws.send('tom');
    alert("给服务端发送一个字符串:tom");
};
ws.onmessage = function(e) {
    alert("收到服务端的消息:" + e.data);
};
  • 暂无评论
年代过于久远,无法发表回答
🔝