【问题标题】:Socket.io Error on server服务器上的 Socket.io 错误
【发布时间】:2018-11-18 08:00:05
【问题描述】:

我尝试在实时服务器上使用套接字 io,但出现此错误。

polling-xhr.js:264 GET http://sub.domain.com:3000/socket.io/?EIO=3&transport=polling&t=MFUVMS5 net::ERR_TIMED_OUT

但在我的本地服务器上,这些文件运行良好。我正在使用 socket.io 和 PHP。

这是我的代码:

server.js

var socket = require('./node_modules/socket.io');
var express = require('./node_modules/express');
var app = express();
var server = require('http').createServer(app);
var io = socket.listen(server);
var port = process.env.PORT || 3000;

// server active console view
server.listen(port, function () {
    console.log('Server listening at port %d', port);
});

io.on('connection', function (socket) {

    // show new added online user
    socket.on('now_online', function (data) {
        io.sockets.emit('now_online',{
            id: data.id,
            name: data.name
        });
    });
});

ma​​in.js

var socket = io.connect('http://'+window.location.hostname+':3000');
socket.on('new_online_user', function (data) {
    if (login_id != data.online_user) {
        $('#contacts-list .contact[data-chat='+data.online_user+']'+' .contact-status').addClass('online');
    }
});

package.json

{
  "private": true,
  "dependencies": {
    "gulp": "^3.9.1",
    "express": "^4.16.2",
    "socket.io": "^2.0.4"
  }
}

我在 google 和 StackOverflow 上搜索了这个问题,但解决的那些对我不起作用。

非常感谢。

【问题讨论】:

  • 3000 端口是否对 Web 服务器上的套接字开放?
  • “我正在使用 socket.io 和 PHP”。您有 Javascript 中的客户端和服务器代码,PHP 标记是偶然的,还是这个问题中缺少某些内容?
  • 请检查服务器是否安装了节点模块var socket = require('./node_modules/socket.io'); var express = require('./node_modules/express');
  • @LovepreetSingh Yes port is open for socket .io
  • @mike42 嗨,我正在处理 Ajax 的服务器请求。我想,我的问题没有任何意义。

标签: php sockets socket.io


【解决方案1】:

尝试仅使用没有http 的域进行连接,例如:

var socket = io.connect(window.location.hostname+':3000', {transports: ["websocket", "xhr-polling", "htmlfile", "jsonp-polling"]});

它会自动变成ws://sub.domain.com:3000/socket.io/?EIO=3&transport=polling&t=MFUVMS5。我正在使用与此类似的并且工作正常。

【讨论】:

  • 感谢您的回答,我试过您的解决了,但没有奏效。同样的错误:(
  • 嗨,现在我知道了,WebSocket 连接到 'ws://sub.domain.com:3000/socket.io/?EIO=3&transport=websocket' 失败:WebSocket 在连接之前关闭已建立且 socket.io 不工作。
  • 看这里:github.com/socketio/socket.io/issues/798。可能会得到一些帮助。
  • 我使用 pm2 在后台运行服务器,此时我从 pm2 中删除服务器并使用“node server.js”运行服务器。
  • 我从服务器中删除了 pm2 并尝试使用“node server.js”以及您的配置,但仍然出现上述错误,非常感谢您
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-07
  • 2016-11-18
  • 2017-12-11
  • 2019-04-10
  • 2016-09-09
  • 2015-12-07
相关资源
最近更新 更多