Django通道错误:未找到路径“socketcluster/”的路由。(我没有任何称为“socketcluster/”的路由)

2024-09-29 23:29:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在学习Django频道,我一直随机地得到这个错误:

[Failure instance: Traceback: <class 'ValueError'>: No route found for path 'socketcluster/'.
C:\Users\Alvaro\.virtualenvs\DjangoChannels-lIBZLoxz\lib\site-packages\autobahn\websocket\protocol.py:2839:processHandshake
C:\Users\Alvaro\.virtualenvs\DjangoChannels-lIBZLoxz\lib\site-packages\txaio\tx.py:366:as_future
C:\Users\Alvaro\.virtualenvs\DjangoChannels-lIBZLoxz\lib\site-packages\twisted\internet\defer.py:151:maybeDeferred
C:\Users\Alvaro\.virtualenvs\DjangoChannels-lIBZLoxz\lib\site-packages\daphne\ws_protocol.py:72:onConnect
--- <exception caught here> ---
C:\Users\Alvaro\.virtualenvs\DjangoChannels-lIBZLoxz\lib\site-packages\twisted\internet\defer.py:151:maybeDeferred
C:\Users\Alvaro\.virtualenvs\DjangoChannels-lIBZLoxz\lib\site-packages\daphne\server.py:200:create_application
C:\Users\Alvaro\.virtualenvs\DjangoChannels-lIBZLoxz\lib\site-packages\channels\staticfiles.py:41:__call__
C:\Users\Alvaro\.virtualenvs\DjangoChannels-lIBZLoxz\lib\site-packages\channels\routing.py:54:__call__
C:\Users\Alvaro\.virtualenvs\DjangoChannels-lIBZLoxz\lib\site-packages\channels\routing.py:150:__call__
]
WebSocket DISCONNECT /socketcluster/ [127.0.0.1:58432]

我的客户端应用程序是一个非常简单的HTML页面,带有Javascript,它连接到服务器,并在单击按钮时发送消息

// Connect Socket
const endpoint = 'ws://localhost:8000/test/'
const socket = new WebSocket(endpoint)

// Button Event listener
const btn = document.getElementById('myBtn')
btn.addEventListener('click', ()=>{
    socket.send("Button Clicked!!!!")
})

我的消费者非常简单,只接受连接并打印它们以及消息和断开连接:

from channels.consumer import AsyncConsumer

class MyConsumer(AsyncConsumer):
    async def websocket_connect(self, event):
        # Runs when new client tries to connect
        print("Connected:", event)
        await self.send({"type": "websocket.accept"})

    async def websocket_receive(self, event):
        # Runs when new message received
        print("Received:", event)

    async def websocket_disconnect(self, event):
        # Runs when client gets disconnected
        print("Disconnected:", event)

最后,我的“routing.py”中只有一个名为“test/”的路由:

from channels.routing import ProtocolTypeRouter, URLRouter
from django.urls import path
from apps.core.consumers import MyConsumer


router = URLRouter([
    path("test/", MyConsumer)
])


application = ProtocolTypeRouter({
    'websocket': router
})

其他一切似乎都很正常,当我单击HTML按钮时,我会在服务器中收到消息,但此错误消息每隔20-60秒左右就会显示一次


Tags: frompyevent消息libpackagessitevirtualenvs

热门问题