从Predis订阅function中激发Laravel事件

我有一个Laravel PHP应用程序和一个NodeJS客户端。 发生在我的客户端,我想更新我的PHP后端,所以我发布消息到Redis频道,并在我的Laravel应用程序,我有一个Redis订阅服务器在该频道上侦听消息。

理想情况下,我想在收到消息时触发一个事件,但是我得到这个错误

[Predis \ Response \ ServerException] ERR only(P)SUBSCRIBE /(P)UNSUBSCRIBE / QUIT在此上下文中被允许

我能够从订阅者那里做我需要的东西,比如更新存储库等等,但是我无法发起Laravel事件,这是在这里做的。

需要pubsub使用两个连接。 订阅者连接除了subscribepsubscribeunsubscribeunsubscribe之外不能发出任何命令(尽pipe@Antirez在将来暗示用户安全的ping)。 如果你试图做其他事情,redis会告诉你:

-ERR only (P)SUBSCRIBE / (P)UNSUBSCRIBE / QUIT allowed in this context (注意,你不能用redis-cli来testing,因为它足够了解协议以防止你在订阅之后发出命令 -但任何其他基本套接字工具应该工作正常)

这是因为用户连接的工作方式非常不同 – 而不是以请求/响应为基础,传入的消息现在可以随时进入,不请自来。

publish是一个常规的请求/响应命令,所以必须在普通连接上发送,而不是在用户连接上发送。 欲了解更多信息,请点击此处