【问题标题】:Socket.io doesn't work in productionSocket.io 在生产中不起作用
【发布时间】:2015-11-28 23:57:36
【问题描述】:

我在 localhost 上尝试过 socket.io,它运行良好。但是,在生产中出现以下错误:

GET http://77.235.46.164:3000/socket.io/?EIO=3&transport=polling&t=1448754369321-21 net::ERR_CONNECTION_TIMED_OUT

在服务器端我有以下代码:

var express = require('express');
var mysql = require('mysql');
app = express(),
server = require('http').createServer(app),
io = require('socket.io').listen(server);
connection.connect();
server.listen(process.env.PORT || 3000);

在客户端:

var socket = io.connect('http://77.235.46.164:3000'); .... etcs

我也在启动节点服务器(我在 EuroVPS 中有 VPS 帐户)。 我到处搜索,但似乎没有找到适合我的解决方案。

【问题讨论】:

    标签: javascript node.js express socket.io vps


    【解决方案1】:

    它在没有防火墙的情况下工作吗?

    在某些受控网络中,防火墙可能会阻止 80,443 以外的 websocket 和端口。

    【讨论】:

    • 我一直在研究这个,但我还没有找到具体的东西。我会让你知道...
    • 你也可以从VPS检查3000端口是否对外界开放
    • 是的,这就是解决方案,我必须打开端口 3000 :)
    【解决方案2】:

    您可以自己创建一个 HTTP 服务器,而不是让 Express 框架为您创建一个,这样您就可以重用您的 HTTP 服务器,以保持相同的服务器实例。

    你可以试试:

    var express = require('express');
    var app = express();
    
    //Create your server
    var server = app.listen(3000);
    var io = require('socket.io')(server);
    
    //Then you can listen for connection
    io.on('connection', function(socket){
        socket.emit('an event sent to all connected clients')
      //Awesome things
    })
    

    【讨论】:

    • 这也不起作用...我正在尝试查看防火墙是否阻止了套接字..
    猜你喜欢
    • 1970-01-01
    • 2015-02-06
    • 2014-01-30
    • 2017-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多