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

标签 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));
});

然后我有这个 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/

相关文章:

node.js - RobuSTLy 检索哪个字段在 Mongo 中导致 'duplicate key error'

node.js - 为什么在 Promises 上使用 async/await 时,netlify-lambda 会记录 UnhandledPromiseRejectionWarning?

node.js - 在 Express 中对路线进行分组

python - 非序列化数据的共享内存缓存

c# - StackExchange.Redis.RedisTimeoutException : The timeout was reached before the message could be written to the output buffer, 并且未发送

java - Java 客户端-服务器套接字编程

node.js - 遍历整个 mongo 数据库的方法太大而无法加载?

javascript - 处理订单队列 (Redis) 的最佳选择是什么?

node.js - socket.io 以及 Restify REST api

node.js - Nodejs & Socket.io 可以支持多少用户?