3

我正在尝试从服务器上的 django 频道示例运行多聊天项目。它在 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",
    },
}

扭曲版本是 16.2.0。

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

4

2 回答 2

1

你能发布完整的日志吗?

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

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

使用主管之类的东西以更好的方式执行此操作,以便在失败时重新启动它们。

于 2016-08-17T16:22:27.253 回答
1

想到的一些问题/建议:

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

“然后当我调用网站时,它显示正确......”

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

你得到一个 404,例如 url Not Found。这可以是来自 DJANGO 的 HTTP 服务器的响应。

于 2016-08-03T06:54:14.770 回答