You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django Channels中WebSocket连接至wss://example.com/wss/失败求助

Django Channels WebSocket连接失败问题

我在Django项目中尝试用Django Channels搭建WebSocket连接,但前端发起连接时一直失败,浏览器控制台报错:WebSocket connection to 'wss://example.com/wss/' failed。以下是我的项目结构及相关配置代码:

项目结构

project/
    ├── myproject/
    │   ├── __init__.py
    │   ├── settings.py
    │   ├── urls.py
    │   ├── wsgi.py
    │   ├── asgi.py
    ├── myapp/
    │   ├── __init__.py
    │   ├── views.py
    │   ├── urls.py
    │   ├── consumers.py
    │   ├── routing.py
    │   ├── templates/
    │       ├── index.html
    ├── manage.py
    ├── passenger_wsgi.py
    ├── requirements.txt

settings.py 相关配置

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'channels',
]

ASGI_APPLICATION = 'myproject.asgi.application'

CHANNEL_LAYERS = {
    'default': {
        'BACKEND': 'channels.layers.InMemoryChannelLayer',
    },
}

asgi.py 配置

import os
from django.core.asgi import get_asgi_application
from channels.routing import ProtocolTypeRouter, URLRouter
from channels.auth import AuthMiddlewareStack
import myapp.routing

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'myproject.settings')

application = ProtocolTypeRouter({
    "http": get_asgi_application(),
    "websocket": AuthMiddlewareStack(
        URLRouter(
            myapp.routing.websocket_urlpatterns
        )
    ),
})

初始 routing.py

from django.urls import path
from . import consumers

websocket_urlpatterns = [
    path('wss/', consumers.LoadConsumer.as_asgi()),
]

consumers.py 代码

from channels.generic.websocket import AsyncWebsocketConsumer

class LoadConsumer(AsyncWebsocketConsumer):
    async def connect(self):
        await self.accept()

    async def disconnect(self, close_code):
        pass

    async def receive(self, text_data):
        pass

前端JavaScript连接代码

const socket = new WebSocket('wss://example.com/wss/');

socket.onopen = function(event) {
    console.log("WebSocket is open now.");
};

socket.onmessage = function(event) {
    console.log("WebSocket message received:", event);
};

socket.onclose = function(event) {
    console.log("Connection closed");
};

socket.onerror = function(error) {
    console.log("WebSocket Error:", error);
};

修改后的 routing.py

from django.urls import re_path
from . import consumers

websocket_urlpatterns = [
    re_path('ws/', consumers.LoadConsumer.as_asgi()),
]

内容的提问来源于stack exchange,提问作者user23470475

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 11:36:14