【问题标题】:Django Channels: Connect to SocketsDjango 通道:连接到套接字
【发布时间】:2018-11-10 10:36:56
【问题描述】:

我正在设置 Django 频道,到目前为止,这是我提交的代码。

#routing.py
from channels.auth import AuthMiddlewareStack
from channels.routing import ProtocolTypeRouter, URLRouter
import routing as route
from django.conf.urls import url
from consumers import ChatConsumer

websocket_urlpatterns = [
    url(r'^ws/chat/$', ChatConsumer),
]

application = ProtocolTypeRouter({
    # (http->django views is added by default)
    'websocket': AuthMiddlewareStack(
        URLRouter(
            websocket_urlpatterns
        )
    ),
})

在consumers.py中

from channels.generic.websocket import WebsocketConsumer
import json

class ChatConsumer(WebsocketConsumer):
    def connect(self):
        self.accept()

    def disconnect(self, close_code):
        pass

    def receive(self, text_data):
        text_data_json = json.loads(text_data)
        message = text_data_json['message']

        self.send(text_data=json.dumps({
            'message': message
        }))

和设置文件

#Channels
ASGI_APPLICATION = 'chatsys.routing.application'

最后是javascript

//Sockets
var myWebSocket = new WebSocket("ws://" + window.location.host + "/chat/");

myWebSocket.onopen = function(evt) { 
    alert("Connection open ..."); 
};

myWebSocket.onmessage = function(evt) { 
    alert( "Received Message: " + evt.data); 
};

myWebSocket.onclose = function(evt) { 
    alert("Connection closed."); 
};    

// Call onopen directly if socket is already open
if (myWebSocket.readyState == WebSocket.OPEN) myWebSocket.onopen(); 
//End Sockets

页面加载时我得到的是 onclose alert("Connection closed."); 的警报以及控制台上的 404 ws 连接到 ws://35.227.80.72/chat/

【问题讨论】:

  • 你是在 80 端口上运行它吗?如果没有,请添加端口。

标签: python django sockets websocket django-channels


【解决方案1】:

你的代码可以在我的机器上运行,除了一件事:

您在尝试连接到/chat/ 时为/ws/chat/ 设置了一个url 路由

【讨论】:

  • hmm... 这是前一阵子,但你也注意到我也在 javascript 和其他部分更改了相同的内容,而不是 django-channels 代码的复制粘贴,但现在正在研究数据科学东西
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-07
  • 2021-11-26
  • 1970-01-01
  • 2018-05-05
  • 2020-06-02
  • 2019-06-12
相关资源
最近更新 更多