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

Django Channels连接Redis失败[Errno111],WebSocket测试异常求助

问题分析与解决方案

错误原因定位

[Errno 111] 无法连接localhost:6379 本质是Redis服务未运行、不可达,或配置错误,和Daphne、AuthMiddlewareStack无直接关联(你之前移除这些操作是无效的,建议恢复Daphne和AuthMiddlewareStack)。

逐步排查与修复

1. 确认Redis服务是否运行

  • Linux系统:
    sudo systemctl status redis-server
    
    若未运行,启动服务:
    sudo systemctl start redis-server
    
  • macOS(通过Homebrew安装):
    brew services list | grep redis
    
    启动服务:
    brew services start redis
    

2. 手动验证Redis连接

执行以下命令测试Redis连通性:

redis-cli ping

若返回PONG,说明Redis正常运行;若返回错误,检查Redis配置文件(通常在/etc/redis/redis.conf)中是否开启了bind 127.0.0.1(允许本地连接),且未设置错误的密码。

3. 检查Channels-Redis配置

确保settings.py中的CHANNEL_LAYERS配置正确:

CHANNEL_LAYERS = {
    "default": {
        "BACKEND": "channels_redis.core.RedisChannelLayer",
        "CONFIG": {
            "hosts": [("127.0.0.1", 6379)],  # 确认地址和端口与Redis实际运行情况一致
            # 若Redis设置了密码,添加以下行:
            # "password": "你的Redis密码",
        },
    },
}

如果Redis运行在非默认端口或远程主机,更新hosts中的对应值。

4. 检查防火墙限制

Linux系统下,确认防火墙未拦截6379端口:

sudo ufw status

若未允许6379端口,执行:

sudo ufw allow 6379

WebSocket测试方法推荐

1. 浏览器控制台测试

打开浏览器开发者工具(F12),在Console标签页执行:

// 替换为你的WebSocket路由路径
const ws = new WebSocket('ws://localhost:8000/ws/your-endpoint/');

ws.onopen = () => {
    console.log('WebSocket连接成功');
    ws.send('测试消息');
};

ws.onmessage = (event) => {
    console.log('收到消息:', event.data);
};

ws.onerror = (error) => {
    console.error('连接错误:', error);
};

ws.onclose = () => {
    console.log('连接关闭');
};

2. 命令行工具wscat

  • 先安装:npm install -g wscat
  • 连接测试:
wscat -c ws://localhost:8000/ws/your-endpoint/

连接成功后可直接输入消息交互。

3. Postman可视化测试

  • 打开Postman,新建WebSocket请求
  • 输入WebSocket URL(如ws://localhost:8000/ws/your-endpoint/)
  • 点击「Connect」按钮,发送消息并查看响应

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 17:12:51