django通道未初始化与angular 4前端的连接

时间:2019-02-12 08:29:27

标签: angular websocket django-channels

我的django后端在docker环境中运行,前端有一个角度。我正在尝试实现websocket在前端和后端之间进行通信。在后端,我添加了 ASGI_APPLICATION = 'app.routing.application'在我的基本设置中。我的项目的基本目录中有一个路由文件,如下所示。

from channels.auth import AuthMiddlewareStack
from channels.routing import ProtocolTypeRouter, URLRouter
import document.routing


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

然后在我的文档应用程序中,我有另一个如下所示的routing.py文件。

from django.conf.urls import url
from . import consumers


websocket_urlpatterns = [
    url(r'^ws/document/convertprogress/$', consumers.ConvertConsumer)
]

在此文档应用中,我还具有一个consumers.py,如下所示。

从channels.generic.websocket导入WebsocketConsumer 导入json

class ConvertConsumer(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,
        }))

在角度方面,我正尝试使用以下功能连接到websocket。

initwebSocket() {
    let chatSocket = new WebSocket(
      'ws://' + window.location.host +
      '/ws/document/convertprogress/');


    chatSocket.onmessage = function(e) {
      console.log("event is");
      console.log(e);
    };

    chatSocket.onclose = function(e) {
      console.error('Chat socket closed unexpectedly');
    };
  }

当另一个函数返回其响应时,将调用此函数,但是我遇到以下错误。

  

WebSocket连接到   'ws:// paksign:4200 / ws / document / convertprogress /'失败:连接   在收到握手响应之前关闭。

     

聊天室意外关闭

我在搜寻了这个问题后尝试了解决方法,但是没有运气。任何帮助表示赞赏。谢谢。

0 个答案:

没有答案