Socket.io客户端无法连接到服务器

时间:2018-05-20 21:43:22

标签: javascript node.js server socket.io

我遇到与服务器的Socket.io连接有关的问题。 它在我的本地工作正常,但在开发服务器上它无法连接。 我的后端代码如下所示:

    var app = require('express')();
var server = require('http').Server(app);
var io = require('socket.io')(server);
var redis = require('redis');

server.listen(8080);

console.log('CONNECTED');
io.on('connection', function (socket) {
    var handshake = socket.handshake;
    console.log(handshake);
    console.log("new client connected");

    var redisClient = redis.createClient();

    redisClient.subscribe('notification');
    redisClient.subscribe('rate');

    redisClient.on("message", function(channel, message) {
        console.log("New message: " + message + ". In channel: " + channel);
        socket.emit(channel, message);
    });

    socket.on('disconnect', function() {
        redisClient.quit();
    });

});

我的客户部分是这样的:

 var socket = io.connect('http://localhost:8080');
 socket.on('notification', function (data) { console.log(data) }

我面临的错误是当socket.io客户端尝试发送到URL“http://localhost:8080/socket.io/?EIO=3&transport=polling&t=MD_W4lE”请求及其失败时出错,错误为ERR_CONNECTION_REFUSED。节点服务器运行我测试,并尝试将localhost更改为127.0.0.1和ipv4地址,我没有帮助。

1 个答案:

答案 0 :(得分:1)

我认为这是因为您没有公开打开节点服务器端口。

您可以按照以下步骤在ec2实例上打开端口。

  • 转到"网络&安全" - >左侧导航中的安全组设置
  • 找到您的实例所属的安全组点击入站规则
  • 使用下拉列表并添加HTTP(端口3000)