有时我的套接字服务器会引发以下问题:
这里是heroku日志:
heroku[router]: at=error code=H15 desc="Idle connection" method=GET path=/socket.io/1/websocket/RcjG0Zjot1U3uwLWX9SI
host=www.*********.** request_id=69f5aa39-255b-4871-a928-1548ef2fdd4f
fwd="217.200.201.210" dyno=web.1 connect=0 service=306473 status=503 bytes=870
我正在使用socket.io库版本0.9.x和节点0.8.x. 它在heroku上托管并激活了websocket(heroku labs:启用websockets -a myapp)。 我没有使用xhr-polling
以下是我实现套接字服务器的方法:
var httpServer = http.createServer(function(request, response) {
var pathname = url.parse(request.url).pathname;
if(pathname == "/") pathname = "index.html";
if(pathname.indexOf("/chat/") != -1 ) pathname = "index.html";
var filename = path.join(process.cwd(), 'public', pathname);
path.exists(filename, function(exists) {
if(!exists) {
response.writeHead(404, { "Content-Type": "text/plain" });
response.write("404 Not Found");
response.end();
return;
}
response.writeHead(200, { 'Content-Type': mime.lookup(filename) });
fs.createReadStream(filename, {
'flags': 'r',
'encoding': 'binary',
'mode': 0666,
'bufferSize': 4 * 1024
}).addListener("data", function(chunk) {
response.write(chunk, 'binary');
}).addListener("close", function() {
response.end();
});
});
});
socket_calls = new socket_calls(webSocket, io, connectedUsers,clients );
webSocket.sockets.on('connection',socket_calls.socket_callback_func );
httpServer.listen(process.env.PORT || 8080, "0.0.0.0");
这个问题似乎只出现在3g连接上,而且有些客户报告说这些问题无法连接到服务器。
我尝试使用“网络链路调节器”在3g连接和wi-fi连接的几个设备上重现问题,以模拟连接错误,但我无法重现错误。
答案 0 :(得分:2)
我已经解决了。 这个问题只出现在3g与TIM职业生涯的联系上。
我已经从heroku命令行工具中禁用了websocket支持,并且我已经在socket.io上启用了xhr-polling。