从Predis订阅function中激发Laravel事件
我有一个Laravel PHP应用程序和一个NodeJS客户端。 发生在我的客户端,我想更新我的PHP后端,所以我发布消息到Redis频道,并在我的Laravel应用程序,我有一个Redis订阅服务器在该频道上侦听消息。
理想情况下,我想在收到消息时触发一个事件,但是我得到这个错误
[Predis \ Response \ ServerException] ERR only(P)SUBSCRIBE /(P)UNSUBSCRIBE / QUIT在此上下文中被允许
我能够从订阅者那里做我需要的东西,比如更新存储库等等,但是我无法发起Laravel事件,这是在这里做的。
您需要为pub
和sub
使用两个连接。 订阅者连接除了subscribe
, psubscribe
, unsubscribe
, unsubscribe
之外不能发出任何命令(尽pipe@Antirez在将来暗示用户安全的ping)。 如果你试图做其他事情,redis会告诉你:
-ERR only (P)SUBSCRIBE / (P)UNSUBSCRIBE / QUIT allowed in this context
(注意,你不能用redis-cli来testing,因为它足够了解协议以防止你在订阅之后发出命令 -但任何其他基本套接字工具应该工作正常)
这是因为用户连接的工作方式非常不同 – 而不是以请求/响应为基础,传入的消息现在可以随时进入,不请自来。
publish是一个常规的请求/响应命令,所以必须在普通连接上发送,而不是在用户连接上发送。 欲了解更多信息,请点击此处