首页 > 解决方案 > 未从 Laravel 中的 Redis 发布功能获取消息

问题描述

我从 Laravel 发布消息,但没有进入节点 js 端。我正在使用 Laravel 5.8。

Laravel 代码:

namespace App\Http\Controllers;

use Redis;

class HomeController extends Controller {
    public function test(){
        $redis = Redis::connection();
        $test = $redis->publish('message', json_encode(['foo' => 'bar']));

        echo $test; // returned 0
        exit;
    }
}

Node.js 代码:

var app = require('express')();
var server = require('http').Server(app);
var io = require('socket.io')(server);
var redis = require('redis');

server.listen(3000);
io.on('connection',function(socket){
    console.log('Starting...');
    var redisClient = redis.createClient();
    redisClient.subscribe('message');

    redisClient.on('message', function(channel, data){
        data = JSON.parse(data);
        console.log(data);        
        io.emit('message', data);
    });

    socket.on('disconnect',function(){
        redisClient.quit();
    });
});

请帮我。提前致谢。

标签: node.jssocketsredislaravel-5.8

解决方案


谢谢!因为我使用redis.options.prefix。函数 subscribe() 回调 $channel 将替换前缀为 ''。


推荐阅读