4

我在这个论坛上看到了一些关于 Socket.IO 和 node.js 的帖子。但仍不能以最佳方式工作。

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

我收到 websocket 连接无效消息。大约 10 秒后,它创建了 websocket,我可以很好地使用它。

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

脚本.js:

 <script>
var socket = io.connect('http://domainname.nl:8081');


socket.on('connect', function(){

socket.emit('adduser', "<?php echo $user->first_name; ?>");
});

应用程序.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
4

2 回答 2

2

您实际上是在尝试启动两台不同的服务器,一台用于您的服务器,一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);
于 2012-08-20T14:38:56.207 回答
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')

在客户端代码中。

于 2013-03-11T13:03:31.407 回答