我正在尝试从服务器上的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。
非常感谢任何有关方向的帮助或暗示。
答案 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
使用类似管理员的方法以更好的方式执行此操作,以便在失败时重新启动它们。