1

我正在写一个小游戏,显然是基于套接字的。在本地主机中一切正常,但是当我从我的专用服务器运行 .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");
}
4

1 回答 1

3

我已经使用 n 节点版本管理器(https://npmjs.org/package/n)安装了早期版本的节点(0.8.25),并且一切都开始正常工作。谢谢funseiki!

于 2013-07-24T14:24:10.823 回答