gpt4 book ai didi

node.js - socket.io URI 请求中缺少正斜杠导致连接失败

转载 作者:太空宇宙 更新时间:2023-11-04 02:22:33 24 4
gpt4 key购买 nike

有时,当我连接到执行上述客户端请求的特定页面时,我会看到许多 404 Not Found 错误,前面有 301 Moved Permanently 错误,并且经过随机次数的尝试(从 1 到 4 次)后,如下所示:

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)。

到目前为止,我已经尝试了很多步骤,因此我们将不胜感激任何反馈。

最佳答案

我尝试直接连接到 IP 地址(我认为我之前在托管于不同的 Web 服务器上时曾这样做过),并发现客户端在第一次尝试时立即与服务器连接。因此,我确定根本原因是 .htaccess 文件中的重定向,其中裸域被重定向到“www”CNAME,最终导致 301 Moved Permanently 错误。

关于node.js - socket.io URI 请求中缺少正斜杠导致连接失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32462456/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com