仅错误 (P)SUBSCRIBE / (P)UNSUBSCRIBE Laravel Echo
ERR only (P)SUBSCRIBE / (P)UNSUBSCRIBE Laravel Echo
美好的一天!
我使用 PrecenseChannel 并使用对 Redis 频道的订阅在服务器端捕获加入/离开
我使用 artisan 命令:
public function handle()
{
$this->info("Presence channel watcher was started!");
Redis::subscribe(['PresenceChannelUpdated'] , function ($message, $channel) {
//Code for comparing users who leave and who join
Notification::send($a1->users, new ExampleNotification($a2, $data));
}
}
我使用发送事件通知(仅广播)
但是发送通知后,我在控制台中收到错误消息:
ERR only (P)SUBSCRIBE / (P)UNSUBSCRIBE / PING / QUIT allowed in this contex
没有通知,一切正常,通知本身有效并发送广播
由于我在服务中使用了这些通知,因此,通知有效
有什么帮助吗?谢谢
解决方法:
转到 php.ini 并设置:
default_socket_timeout = -1
并为 Redis 添加连接
Redis::connection('subscriber')->subscribe(['PresenceChannelUpdated'], callback)
一旦 Redis 连接订阅了 pubsub 频道,它就变成了 pubsub 类型的连接,只允许 (P)SUBSCRIBE / (P)UNSUBSCRIBE / PING / QUIT 命令。
看起来您正在尝试对其他命令(可能是 R/W 数据)使用相同的连接,这会产生这个确切的错误。解决方案是有两个连接对象,一个订阅者和一个处理所有其他 Redis 命令。
美好的一天! 我使用 PrecenseChannel 并使用对 Redis 频道的订阅在服务器端捕获加入/离开 我使用 artisan 命令:
public function handle()
{
$this->info("Presence channel watcher was started!");
Redis::subscribe(['PresenceChannelUpdated'] , function ($message, $channel) {
//Code for comparing users who leave and who join
Notification::send($a1->users, new ExampleNotification($a2, $data));
}
}
我使用发送事件通知(仅广播) 但是发送通知后,我在控制台中收到错误消息:
ERR only (P)SUBSCRIBE / (P)UNSUBSCRIBE / PING / QUIT allowed in this contex
没有通知,一切正常,通知本身有效并发送广播
由于我在服务中使用了这些通知,因此,通知有效
有什么帮助吗?谢谢
解决方法: 转到 php.ini 并设置:
default_socket_timeout = -1
并为 Redis 添加连接
Redis::connection('subscriber')->subscribe(['PresenceChannelUpdated'], callback)
一旦 Redis 连接订阅了 pubsub 频道,它就变成了 pubsub 类型的连接,只允许 (P)SUBSCRIBE / (P)UNSUBSCRIBE / PING / QUIT 命令。
看起来您正在尝试对其他命令(可能是 R/W 数据)使用相同的连接,这会产生这个确切的错误。解决方案是有两个连接对象,一个订阅者和一个处理所有其他 Redis 命令。