设置 Django 频道
Setting up Django Channels
我一直在尝试将 Django 通道集成到我现有的 Django 应用程序中。
这是我的 routing.py:
from channels.routing import route
channel_routing = [
route('websocket.receive', 'chat.consumers.ws_echo', path=r'^/chat/$'),
]
这是我的 consumers.py:
def ws_echo(message):
message.reply_channel.send({
'text': message.content['text'],
})
我正在尝试通过这样做来创建套接字:
ws = new WebSocket('ws://' + window.location.host + '/chat/');
ws.onmessage = function(message) {
alert(message.data);
};
ws.onopen = function() {
ws.send('Hello, world');
};
当我 运行 这段代码时,我的控制台出现以下错误:
WebSocket connection to 'ws://localhost:8000/chat/' failed: Error during WebSocket handshake: Unexpected response code: 404
在我的服务器上,出现以下错误:
HTTP GET /chat/ 404
根据错误,我认为 Django 提供的是 http 连接而不是 ws 连接。
非常感谢对此问题的任何帮助。
我的设置问题出在我的 nginx 配置上。我所要做的就是添加转发线路,它解决了问题。
location /chat { # Django Channels
proxy_pass http://0.0.0.0:8001;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
我一直在尝试将 Django 通道集成到我现有的 Django 应用程序中。
这是我的 routing.py:
from channels.routing import route
channel_routing = [
route('websocket.receive', 'chat.consumers.ws_echo', path=r'^/chat/$'),
]
这是我的 consumers.py:
def ws_echo(message):
message.reply_channel.send({
'text': message.content['text'],
})
我正在尝试通过这样做来创建套接字:
ws = new WebSocket('ws://' + window.location.host + '/chat/');
ws.onmessage = function(message) {
alert(message.data);
};
ws.onopen = function() {
ws.send('Hello, world');
};
当我 运行 这段代码时,我的控制台出现以下错误:
WebSocket connection to 'ws://localhost:8000/chat/' failed: Error during WebSocket handshake: Unexpected response code: 404
在我的服务器上,出现以下错误:
HTTP GET /chat/ 404
根据错误,我认为 Django 提供的是 http 连接而不是 ws 连接。
非常感谢对此问题的任何帮助。
我的设置问题出在我的 nginx 配置上。我所要做的就是添加转发线路,它解决了问题。
location /chat { # Django Channels
proxy_pass http://0.0.0.0:8001;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}