Laravel 5.2 - Redis - Socket.io发布不起作用

时间:2016-04-20 14:13:48

标签: node.js redis socket.io laravel-5.2

我在Windows 10机器上安装了laravel。 我写了这条简单的路线

Route::get('/event', function(){
    $data = array("key"=>"val");
    Redis::publish('test-channel', json_encode($data));
});

然后我就是这个节点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'时(节点服务器正在侦听)..我在'test-channel'上没有收到任何消息

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

尝试更改:

redis = new Redis(); 

为:

redis = new Redis('6379', 'Redis');

答案 1 :(得分:0)

Laravel在频道名称之前添加前缀。您可以在 config / database.php 中检查前缀,然后找到datetime.date。默认情况下,前缀为redis => options => prefix,因此您需要订阅laravel_database_而不是laravel_database_test-channel