我遇到与服务器的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地址,我没有帮助。
答案 0 :(得分:1)
我认为这是因为您没有公开打开节点服务器端口。
您可以按照以下步骤在ec2实例上打开端口。