[这是Github上socket.io问题#2717的副本。那里没有答案,我很想得到一些故障排除提示......]
我有一个测试页面(下面),它创建一个socket.io连接回服务器,然后监听并记录' time'消息。它适用于OSX 10.10.5上最近的Chrome和Safari。我使用Socket.io 1.5.0进行所有测试。
使用Firefox 49.0.1,每个POST请求都会获得bad handshake method
的响应。控制台中没有Socket.io connected...
消息,并且没有time
消息到达(请参见图像)。关于POST的其他有趣信息是:
- Params: EIO:3, t: LUuPeKr, transport:polling
- POST raw data: "1:1"
测试页面连接回一个create-react-app应用程序(0.6.1),该应用程序将请求代理到localhost:3001上我自己的服务器。如上所述,此页面可与Chrome和Safari一起使用。
我可以提供哪些其他信息来调试此内容?
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>SOCKET.IO TEST PAGE</title>
</head>
<body>
<h1>Socket.io Test Page</h1>
<script src="/socket.io/socket.io.js"></script>
<script>
var socket = io();
socket.on('connect', function(data){
console.log("Socket.io connected...");
});
socket.on('time', function (data) {
console.log(data);
});
</script>
</body>
</html>
答案 0 :(得分:6)
我在chrome中也遇到了严重的握手方法错误,并通过降级到socket.io 2.3.1进行了修复,并且与socketio-client相同
答案 1 :(得分:1)
回答我自己的帖子:在github上找到解决方案。 https://github.com/socketio/socket.io/issues/2717讲述了对socket.io代码的修复,以便始终请求&#39; * / *&#39;而不是使用Firefox的默认设置。