【问题标题】:not able to receive messaged in redis client subscribed to channel ; messages sent from laravel server无法在 redis 客户端订阅频道中接收消息;从 laravel 服务器发送的消息
【发布时间】:2021-06-12 19:53:02
【问题描述】:

我正在尝试订阅 redis 频道“JoinCall”并在控制台中记录消息。

消息正在从 Laravel 服务器发布

我的节点 js 服务器代码:


    const app = require("express")();
    const server = require("http").createServer(app);
    
    const io = require("socket.io")(server, {
        cors: {
          origin: '*',
        }
      });
    
    io.on("connection", () => {
        console.log("Connected!");
    });
    
    var redis = require('redis');  
    var url = "redis://@localhost:6379"; 
    //var redis = require('redis-url').connect();
    var client = redis.createClient(url);  
    //var client = redis.createClient();
    client.on("error", function(error) {
      console.error(error);
    });
    
    client.on('message', function(channel, msg) {  
      console.log("Message received: "+msg);
      io.sockets.emit(msg);
    });
    
    client.subscribe('JoinCall');
    
    console.log('starting server on 8001...');
    server.listen(8001);

我发布消息的 Laravel 代码:


    Redis::publish('JoinCall', "testing123");
    \Log::Debug("message published on JoinCall ");

我的 Laravel redis 设置:

REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379

        

【问题讨论】:

    标签: redis node-redis


    【解决方案1】:

    问题出在我的 laravel redis 设置中

    在 config/database.php 中,有一个前缀应用于频道名称;我不得不评论它

        'redis' => [
        
                'client' => env('REDIS_CLIENT', 'predis'),
        
                'options' => [
                    'cluster' => env('REDIS_CLUSTER', 'redis'),
                    //'prefix' => env('REDIS_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_database_'),
                ],
    
    

    【讨论】:

    猜你喜欢
    • 2020-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-12
    • 2015-10-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多