【问题标题】:Socket.IO node.js websocket connection invalid port 8081Socket.IO node.js websocket连接无效端口8081
【发布时间】:2013-03-11 21:03:31
【问题描述】:

我在这个论坛上看到了一些关于 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

【问题讨论】:

  • 我今天在我的应用程序中注意到了同样的事情。它直接在端口 16667 上正确运行,但在通过代理设置运行时会出现此问题,该代理设置将端口 80 流量从那里的域重定向。

标签: node.js socket.io


【解决方案1】:

您实际上是在尝试启动两台不同的服务器,一台用于 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);

【讨论】:

  • 当我改变它时。我仍然有问题。套接字可以工作,但需要 10 秒才能连接(请参阅上面的更新)
  • 很奇怪。如果您在 localhost 上连接到它,它的行为是否相同?
  • 它在外部服务器上。 (ubuntu 服务器)将其设置为 localhost 时,它什么也不做。
  • 嗯...你能在你自己的机器上运行它时重现这个问题吗?或者在中间没有任何潜在代理/防火墙的情况下运行。
  • 由于时间,我稍后会在我的本地机器上设置它。 Firefox 控制台也给了我一个错误:Tijdstempel: 21-8-2012 14:18:54 Fout: Firefox kan geen verbinding maken met de server op ws://domain.nl:9250/socket.io/1/websocket /180625581996179685。 Bronbestand: domain.nl:9250/socket.io/socket.io.js Regel: 2293 Tijdstempel: 21-8-2012 14:19:04 Fout: syntaxisfout Bronbestand: domain.nl:9250/socket.io/1/xhr-polling/… Regel: 1, Kolom: 1 Broncode: 1 但它确实连接...
【解决方案2】:

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

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

在客户端代码中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-07
    • 2018-04-11
    • 2013-12-04
    • 2023-01-04
    • 1970-01-01
    • 1970-01-01
    • 2015-12-16
    相关资源
    最近更新 更多