我设法使django使用通道将消息发送到浏览器websocket客户端。但是我不太了解。
我的Celery后台任务在未显示来自浏览器的websocket握手之前创建的消息。
消息与
一起发送async_to_sync(channel_layer.group_send)(str(job.id),..)
Django v 2.1.7。
通道层使用redis,因此group_send来自channels_redis,第一个参数是组ID。我希望有一个与job.id连接的客户端将所有消息发送到该组。
这有意义吗?
答案 0 :(得分:0)
正在发送的消息不会等待未知的将来的客户端/连接,因此您必须自己实现该机制。您应该在发送消息之前检查客户端是否已连接,在这种情况下,您应该将消息存储在某个表中,并在以后连接时将其发送给客户端。
主要问题是如何跟踪客户端的联机状态。我使用的方法与this question的答案中的方法类似,但是这种方法不是很可靠,但是对于开始来说还不错