我在 windows 10 机器上安装了 laravel。 我写了这条简单的路线
Route::get('/event', function(){
$data = array("key"=>"val");
Redis::publish('test-channel', json_encode($data));
});
然后我有这个 Node server.js
var server = require('http').Server();
var io = require('socket.io')(server);
var Redis = require('ioredis');
redis = new Redis();
redis.subscribe('test-channel');
redis.on('message', function(channel, message){
console.log("message retriving..");
});
server.listen(6001, function(){
console.log('listening on 6001');
});
我在安装了 Redis 的虚拟机上安装了 Ubuntu。
我的 laravel .env 文件是
BROADCAST_DRIVER=redis
REDIS_HOST=192.168.1.14 #ubuntu ip
REDIS_PASSWORD=null
REDIS_PORT=6379
问题是当路由“/event”被执行时( Node 服务器正在监听)..我在“test-channel”上没有收到任何消息
有什么想法吗?
最佳答案
Laravel 在 channel 名称前添加前缀。您可以在 config/database.php 中检查前缀,然后找到 redis => options => prefix
。默认情况下,前缀是 laravel_database_
所以你需要订阅 laravel_database_test-channel
而不是 test-channel
。
关于node.js - Laravel 5.2 - Redis - Socket.io 发布不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36746572/