django websockets无法在频道上发送消息

时间:2017-04-06 20:00:01

标签: django websocket redis django-channels

我在Django上使用Redis的Web套接字。 Django在macOS服务器上运行正常,但是我开始在Redhat Linux服务器上运行它,现在每当我通过websockets发送包时,服务器都会给我这个错误:

ERROR - server - HTTP/WS send decode error:
    Cannot dispatch message on channel
    u'daphne.response.fzdRCEVZkh!nqhIpaLfWb' (unknown)

注意:当我收到错误时,将正确收到包裹。

我无法找到此错误的任何资源。

我关注official instructions频道。

1 个答案:

答案 0 :(得分:3)

根据Andrew Godwin(频道包的开发者)的说法,如果您有一个已断开连接但未从频道组中删除的频道,则会记录此消息:

  

啊,是的,Daphne比以前更加冗长,我需要删除它。不要担心 - 断开仍然在群组中的频道后,它是完全正常的。但是,您可能希望在断开处理程序中添加Group.discard调用以阻止它。

Source.

我使用prod的自定义impl时遇到了同样的错误。在channels.generic.websockets.WebsocketConsumer回调中清除群组中的频道后,消息就消失了。

基于类的使用者的简短示例:假设您在连接建立时将客户端添加到名为disconnect的广播组。然后,在客户端断开连接时,从组中删除其频道:

foo