当前位置: 首页 > 面试题库 >

通过单独的nodeJS实例共享套接字

孔欣荣
2023-03-14
问题内容

我正在使用多个聊天服务器(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文档包含有关进行粘性会话和分发消息的部分。快速的答案是使用类似的模块socket.io- redis



 类似资料:
  • 问题内容: 我喜欢NodeJS的某些功能,特别是JQuerification,通过socket.io的websocket兼容性,我不能与JSP一起使用的视图和CSS引擎(当然还有异步调用)。至少据我所知。因此,我计划在后端为Java的情况下创建应用程序,前端由NodeJS生成。前端表单将数据发送到NodeJS,后者将通过NodeJS和Java后端之间的套接字连接将其传递到Java后端。因此,Nod

  • 问题内容: 我正在尝试在python和lua之间传递数据(数组),并且我想使用Torch7框架在lua中处理数据。我认为这可以通过C来最好地完成,因为python和lua与C进行了接口。另外一些优点是不需要这种方式进行数据复制(仅传递指针)并且速度很快。 我实现了两个程序,一个程序将lua嵌入到c中,另一个程序将python将数据传递给c。它们都编译为可执行二进制文件时都可以工作。但是,当将c t

  • 我正在使用谷歌驱动器开发一个应用程序。我希望用户能够通过链接共享文件,将权限设置为和,如Google Developers文档中所述。 但是,我不知道分享什么链接。当我在Google Drive browser界面中共享文件时,我会看到的格式: 这种格式的链接不是文件资源对象的一部分,也不是从设置权限的http调用返回的。我希望有人能给我解释一下如何通过REST API获得这个链接?

  • 我正在开发一个应用程序,它必须通过whatsapp共享mp3文件。 我现在的代码如下: 例如,我可以通过Gmail成功共享,但通过whatsapp无法实现。这是我的代码的问题还是whatsapp不允许你共享mp3文件? 提前感谢!

  • 问题内容: 我想知道这个著名报价的最真实的解释是什么: 不要通过共享内存进行交流;通过通信共享内存。(R.派克) 在Go Memory Model中,我可以阅读以下内容: 通道上的发送发生在该通道上的相应接收完成之前。(Golang规格) 还有一篇专门的golang文章解释了报价。而关键的贡献是一个工作例子也由Andrew G. 好。有时谈论太多....我是从“内存规范”引用中得出的,也可以通过查

  • 本文向大家介绍Spring session实现共享单点登录案例过程解析,包括了Spring session实现共享单点登录案例过程解析的使用技巧和注意事项,需要的朋友参考一下   一、项目构建   1、案例说明   本文主要演示单点登录功能,会贴出主要配置和代码以及必要解释,全部代码请参考git地址。session共享一个基本原则是将session存储在某个地方,所有的应用都可以访问,这里使用re