Socket.IO node.js websocket连接无效的端口8081

我在这个论坛上看到过一些关于Socket.IO和node.js的文章。 但是还是不够优化。

端口80和端口8080被我的networking服务器用于不同的应用程序。 所以在App.js和我的套接字连接我添加端口8081而不是8080。

我得到的websocket连接无效的消息。 10秒左右后,它创build了websocket,我能够很好地使用它。

但是10秒太长了。 任何想法如何解决这一问题?

的script.js:

<script> var socket = io.connect('http://domainname.nl:8081'); socket.on('connect', function(){ socket.emit('adduser', "<?php echo $user->first_name; ?>"); }); 

app.js

 var app = require('express').createServer() var io = require('socket.io').listen(8081); app.listen(8081); // routing app.get('/', function (req, res) { res.sendfile(__dirname + '/index.html'); }); 

更新:

当我改变它。 我仍然有问题。 套接字工作,但需要10秒才能连接

  info - socket.io started debug - served static /socket.io.js debug - client authorized info - handshake authorized 15619940591959058675 debug - setting request GET /socket.io/1/websocket/15619940591959058675 debug - set heartbeat interval for client 15619940591959058675 warn - websocket connection invalid info - transport end debug - set close timeout for client 15619940591959058675 debug - cleared close timeout for client 15619940591959058675 debug - cleared heartbeat interval for client 15619940591959058675 debug - client authorized for debug - setting request GET /socket.io/1/xhr-polling/15619940591959058675?t=1345479037596 debug - setting poll timeout debug - clearing poll timeout 

您正在有效地尝试启动两个不同的服务器,一个用于您的app ,一个用于socket.io,都使用相同的端口8081

 var app = require('express').createServer() var io = require('socket.io').listen(8081); app.listen(8081); 

你可以像这样将一个端口号传递给socket.io,但是如果你要用节点http服务器运行它,你应该通过这个(例如, app )来监听,就像这样:

 var app = require('express').createServer() var io = require('socket.io').listen(app); app.listen(8081); 

通过代理连接时,我遇到了同样的问题。

我的服务器(express + socket.io,就像@Linux G Thiel所描述的那样)在app.example.com:12345监听,并且在example-app.com (端口80)设置了一个代理服务器。 它通过实际的URL访问时正常工作,但通过代理访问时展现了websocket连接的10秒延迟。

我已经设法通过简单的改变来解决它

 var socket = io.connect();` 

 var socket = io.connect('http://app.example.com:12345') 

在客户端代码中。