Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用socket.io-redis的示例_Redis_Socket.io_Socket.io Redis - Fatal编程技术网

使用socket.io-redis的示例

使用socket.io-redis的示例,redis,socket.io,socket.io-redis,Redis,Socket.io,Socket.io Redis,大家好,谢谢你们的时间和帮助 我需要一个使用socket.io-redis的简单示例,请提供评论。 我读了文档,但不明白。 谢谢,socket.io-redis文档没有提到您实际上需要运行redis服务器,因此您可能已经忘记了这一点。socket.io-redis插件使用redis服务器的发布/订阅客户端连接多个socket.io实例 从下载并安装redis服务器 将redis插件添加到socket.io实例: var express = require('express'); var app

大家好,谢谢你们的时间和帮助

我需要一个使用socket.io-redis的简单示例,请提供评论。 我读了文档,但不明白。
谢谢,

socket.io-redis文档没有提到您实际上需要运行redis服务器,因此您可能已经忘记了这一点。socket.io-redis插件使用redis服务器的发布/订阅客户端连接多个socket.io实例

  • 从下载并安装redis服务器

  • 将redis插件添加到socket.io实例:

    var express = require('express');
    var app = express();
    var server = require('http').Server(app);
    var io = require('socket.io')(server);
    var redis = require('socket.io-redis');
    io.adapter(redis({ host: 'localhost', port: 6379 }));
    
    如果在同一台服务器上运行node和redis,则6379是默认的redis端口localhost

  • 添加所需的socket.io和socket.io-redis函数

    var your_namespace_socket = io.of('/your-namespace');
    your_namespace_socket.on('connection', function(socket){
    
      socket.on('join', function(room){
        socket.join(room);
    
        //log other socket.io-id's in the room
        your_namespace_socket.adapter.clients([room], (err, clients) => {
          console.log(clients);
        });
      });
    });
    
  • 使用socket.io启动服务器

    server.listen(3000, function(){
       logger.debug('listening on *:3000');
    });
    

  • 如果我在不同的机器上运行多个sockeio nodejs服务器,该适配器是否允许我在一个房间中加入来自不同服务器的选定用户?@Aedric是的!文件室本身在Redis上持久化,因此当您请求用户时,实际上不是从服务器(内存中)请求,而是从Redis(跨服务器持久化)请求。从软件包的GitHub页面上可以看到“适配器,用于将事件广播到多个单独的socket.io服务器节点”。非常感谢。为什么没人告诉我们需要redis服务器?准确地说,有很多刚开始的人从来没有听说过redis,他们真的不理解这种必要性。再次感谢lot@kano从Github页面-注意:Redis本身没有存储任何数据。Redis server仅充当发布/订阅服务器。每个发出的消息都会发布到redis,并广播到其他套接字服务器。