Django ошибка загрузки каналов javascript обертка - PullRequest
1 голос
/ 21 января 2020

каналы. До сих пор я успешно запустил сервер, как это было показано в моей командной строке:

System check identified no issues (0 silenced).
January 21, 2020 - 17:43:42
Django version 3.0.2, using settings 'crm.settings'
Starting ASGI/Channels version 2.4.0 development server at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.

, однако я сталкиваюсь с этой ошибкой в ​​моей консоли:

Failed to load resource: the server responded with a status of 404 (Not Found)websocketbridge.js:1
Uncaught ReferenceError: channels is not defined
at HTMLDocument.<anonymous> ((index):353)

Вот мой код.

в моих настройках:

ALLOWED_HOSTS = ["0.0.0.0","127.0.0.1"]
INSTALLED_APPS = [
'channels',
.....
]
WSGI_APPLICATION = 'crm.wsgi.application'
ASGI_APPLICATION = 'crm.routing.application'

в моих routers.py:

from channels.routing import ProtocolTypeRouter , URLRouter
from django.urls import path
from rnd.consumers import EchoConsumer

application = ProtocolTypeRouter({
    "websocket": URLRouter([
            path("ws/",EchoConsumer)
        ])
    })

В моих потребителях .py:

from channels.consumer import AsyncConsumer

class EchoConsumer (AsyncConsumer):

async def websocket_connect(self,event):
    await self.send({
            "type" : "websocket.accept"
        })

async def websocket_receive(self,event):
    await self.send({
            "type" : "websocket.send",
            "text" : event["text"]
        })

в моем html:

<script src="{% static '/channels/js/websocketbridge.js' %}"></script>
<script type="text/javascript">

    document.addEventListener('DOMContentLoaded',function(){
    const webSocketBridge = new channels.WebSocketBridge();
    webSocketBridge.connect('/ws/');
    webSocketBridge.listen(function(action,stream){
      console.log("RESPONSE:",action,stream);
    })
    document.ws = webSocketBridge; 
  })
</script>

У кого-нибудь есть решение для этого?

1 Ответ

1 голос
/ 24 января 2020

Websocketbridge не поддерживается для каналов> = v2

Есть несколько библиотек, которые сидят на каналах v2, которые пытаются вернуть некоторые из этих функций.

(отказ от ответственности Я являюсь разработчиком пакета djangochannelsrestframework)

В качестве альтернативы вы можете использовать WS напрямую через API браузера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...