gpt4 book ai didi

node.js - 在单独的 nodeJS 实例上共享套接字

转载 作者:IT王子 更新时间:2023-10-29 06:10:01 26 4
gpt4 key购买 nike

我正在使用多个聊天服务器 (nodeJS) 和一个 redis 服务器制作聊天应用程序,这应该有助于对所有 nodeJS 实例进行分组。好吧,我有这个:

var io = require('socket.io').listen(3000);

// Create a Redis client
var redis = require('redis');
client = redis.createClient(6379, '54.154.149.***', {});

// Check if redis is running
var redisIsReady = false;
client.on('error', function(err) {
redisIsReady = false;
console.log('redis is not running');
console.log(err);
});
client.on('ready', function() {
redisIsReady = true;
console.log('redis is running');
});


io.sockets.on('connection', function(socket){
socket.on('new user', function(data){
client.set('user:' + data, socket.id);
})

socket.on('send message', function(data){
client.get('user:' + data['id'], function (err, socketId) {
io.sockets.connected[socketId].emit('new message',data['msg']);
});
})

socket.on('disconnect', function(data){

});
});

redis 运行良好,如果我在同一台服务器上有两个用户,他们可以聊天。但是如果它们在不同的服务器上,它们就不能,因为服务器之间不共享套接字。我该如何解决这个问题?我检查了 redis 上的 pub/sub,我确定这就是答案,但我没有设法实现它。

最佳答案

Socket.IO 文档有一节关于 doing sticky sessions and distributing messages .不过,快速的答案是使用像 socket.io-redis 这样的模块。 .

关于node.js - 在单独的 nodeJS 实例上共享套接字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28050539/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com