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')
在客户端代码中。