有时,当我连接到执行上述客户端请求的特定网页时,我会看到一些404 Not Found
错误,前面是301 Moved Permanently
错误,并且在随机数字之后尝试(从一到四)如下:
GET http://domain.com/socket.io?EIO=3&transport=polling&t=1441727903280-0 404 (Not Found)
GET http://domain.com/socket.io?EIO=3&transport=polling&t=1441727905168-1 404 (Not Found)
Client connected...
我看到的第一个请求显示以下信息:
Request URL:http://domain.com/socket.io/?EIO=3&transport=polling&t=1441728010300-0
Request Method:GET
Status Code:301 Moved Permanently
进程请求失败并显示404 Not Found
,直到成功:
Request URL:http://domain.com/socket.io/?EIO=3&transport=polling&t=1441728015410-2
Request Method:GET
Status Code:200 OK
这里有什么奇怪的是,网络日志中为任何失败请求指定的URI如下所示:
失败
http://domain.com/socket.io?EIO=3&transport=polling
成功
http://domain.com/socket.io/?EIO=3&transport=polling
正如您所看到的,似乎客户端首先尝试连接到URI而没有尾随正斜杠;但是,任何并发的成功连接都包含正斜杠。
此问题是随机发生的,有时它会成功运行,大部分时间都会失败。它正在成功地开发我的开发环境。
我已经将问题简化到了一个点,我有一个简单的NodeJS服务器,客户端可以通过socket.io连接,如下所示:
客户端
<script type="text/javascript">
$(document).ready(function() {
// open a socket connection
var socket = io();
socket.on('connect', function (user) {
console.log('Client connected...');
});
});
</script>
服务器
var server = require('http').createServer();
var io = require('socket.io')(server);
var redis = require('redis');
server.listen(8083);
io.on('connection', function (socket) {
console.log('Client connected successfully...');
// Error reporting
socket.on('error', function (err) {
console.log("Socket.IO Error");
console.log(err.stack);
});
socket.on('disconnect', function() {
// redisClient.quit();
console.log('Client disconnected...');
});
});
注意:我目前正在使用haproxy
将请求从端口80路由到8081(HTTP)和8083(NodeJS)。
到目前为止,我已经尝试了很多步骤,因此我们将非常感谢任何反馈。
答案 0 :(得分:0)
我试图直接连接到IP地址(我以前在托管在不同的Web服务器上时已经做过),并发现客户端在第一次尝试时立即与服务器连接。因此,我确定了根本原因是我的.htaccess
文件中的重定向,其中裸域被重定向到'www'CNAME,最终导致301 Moved Permanently
错误。