django渠道websocket连接不工作

时间:2016-08-02 15:04:43

标签: django channels django-channels

我正在尝试从服务器上的django channels-examples运行multihat项目。它在Windows机器上本地工作但是当我把它放在linux服务器上并用runserver启动它时它不会:

./manage.py runserver

然后当我打电话给网站时,它显示正确但是只要JS发送websocket请求,我总是得到这个响应:

[2016/08/02 14:35:48] HTTP GET /chat/stream/ 404 [0.04, 127.0.0.1:40186]
....(many lines of this)

因此,websocket请求作为http请求处理。答案应该是:

[2016/08/02 16:34:45] WebSocket CONNECT /chat/stream/ [127.0.0.1:60250]

我不知道哪里出错了。 http与websocket的路由似乎是在daphne / twisted /...

内部的某处进行的

我的频道设置是(如果有任何帮助的话):

CHANNEL_LAYERS = {
    "default": {
        "BACKEND": "asgi_redis.RedisChannelLayer",
        "CONFIG": {
            "hosts": [(redis_host, 62031)],
        },
        "ROUTING": "multichat.routing.channel_routing",
    },
}

Twisted版本是16.2.0。

非常感谢任何有关方向的帮助或暗示。

2 个答案:

答案 0 :(得分:1)

想到的一些问题/建议:

用于开发或生产的linux服务器?即是否有HTTP服务器或只是简单的DJANGO运行? (在前一种情况下,您不能以“./manage runserver”开头。)

  

“然后当我打电话给网站时,它显示正确......”

这是因为请求的端口号不同吗? 40186 vs 60250.

你得到的是404,例如网址未找到。这可以是来自DJANGO的HTTP服务器的响应。

答案 1 :(得分:1)

你可以发布完整的日志吗?

尝试使用daphne运行服务器并运行worker

daphne multichat.asgi:channel_layer --port 80 --bind 0.0.0.0 -v2 
python manage.py runworker -v2 

使用类似管理员的方法以更好的方式执行此操作,以便在失败时重新启动它们。