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

时间:2012-08-20 14:36:02

标签: node.js socket.io

我在这个论坛上看过一些关于Socket.IO和node.js的帖子。但仍然没有达到最佳效果。

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

我收到的websocket连接无效消息。大约10秒后,它创建了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

2 个答案:

答案 0 :(得分:2)

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

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

app.listen(8081);

你可以像这样将端口号传递给socket.io,但如果要用节点http服务器运行它,你应该传递它(即app)来监听,如下所示: / p>

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

app.listen(8081);

答案 1 :(得分:0)

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

我的服务器(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')

在客户端代码中。