项目场景:
Django Channels的channels-layer配置redis遇到连接问题:
Django Channels 配置了channels-layer为redis,用以实现群聊。在MacOS开发环境下一切正常,部署到服务器上后客户端始终连接不到ws服务。
问题描述
websocket连接刚刚连上就断开
前端控制台显示,连接成功,秒断,显示连接错误:
反复尝试均不能正常连接。
windows的django、django-channels、channels-redis均重新安装
依旧不能保持正常连接。
重启,redis服务正常。
依旧不能保持正常连接。
原因分析:
结论:windows安装的redis版本太低
先后更改了channels-layer配置下的ip,试了外网访问ip、localhost、局域网ip、主机域名均不能正常连接。客户端返回的提示信息是,刚刚连接上,即断开了连接。在consumers里增加了多个位置的print。后来发现确实是卡在了channels-layer配置这里。
from channels.generic.websocket import AsyncJsonWebsocketConsumer
from channels.exceptions import StopConsumer
class GroupConsumer(AsyncJsonWebsocketConsumer):
def __init__(self, *args