我正在写一个小游戏,显然是基于套接字的。在本地主机中一切正常,但是当我从我的专用服务器运行 .swf 文件并尝试连接到 node.js 服务器时,连接卡在“握手授权”:
info: Server starting...
info - socket.io started
info: Listening on port 4000
info: Server started.
debug - client authorized
info - handshake authorized _kqPhvoD6jYI-c1Gr7zu
就是这样。
- 本地 SWF 文件 -> 本地 Node.JS -> 有效。
- 本地 SWF 文件 -> 远程 Node.JS -> 有效。
- 远程 SWF 文件 -> 远程 Node.js -> 不起作用。
节点版本 0.10.12。它不是防火墙或防病毒软件。尝试在不同的端口上运行。
代码示例:
//setup express for serving crossdomain on same port as game
var express=require('express');
var app=express();
app.get("/crossdomain.xml", onGetCrossdomain);
var server=require('http').Server(app);
//setup socket io
var socketIo=require('socket.io');
var io=socketIo.listen(server);
//listen on port
server.listen(currentPort);
console.log("Listening on port "+currentPort);
io.set('transports',
[
'flashsocket'
]);
io.sockets.on('connection', onConnection);
function onGetCrossdomain(req, res)
{
res.sendfile(__dirname+'/crossdomain.xml');
}
function onConnection(socket)
{
console.log("connected");
}