Riz*_*raf 1 publish-subscribe redis node.js laravel
我使用laravel api 作为后端,vue 作为前端。这些是独立的项目。当我点击 redis 连接后发布的 api 时,例如
$redis = Redis::connection();
$redis->publish('new_message_sent',json_encode($request->all()));
Run Code Online (Sandbox Code Playgroud)
它没有做任何事情。事实上,当我点击 api(使用 postman)并返回 $redis 对象时,它返回一个空对象。
这是订阅的节点服务器代码
io.on("connection", function(socket) {
console.log("Client Connecteddddd");
var redisClient = redis.createClient();
redisClient.subscribe("new_message_sent");
redisClient.on("new_message_sent", function(channel, message) {
message = JSON.parse(message);
console.log(message);
});
redisClient.on("disconnect", function() {
redisClient.quit();
});
});
Run Code Online (Sandbox Code Playgroud)
我偶然发现了类似的情况,我希望我的 Redis 客户端能够收到来自 LaravelRedis外观的已发布消息,但事实并非如此。
我预计跑步时Redis::publish('foo', 'bar')会被接走。SUBSCRIBE fooredis-cli
运行后MONITOR我redis-cli发现发布的频道名称与我预期的不同 - {app-name}_database_foo。
这是在密钥中配置的database.php,redis.options.prefix默认env('REDIS_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_database_'),情况下,了解这一点/更改这一点将会有所帮助。
| 归档时间: |
|
| 查看次数: |
2211 次 |
| 最近记录: |