Закрывается WebSocket сразу после открытия (Django, Daphne, Redis)
Возникла необходимость внедрения на WSGI Django сайт - чата. Сайт крутился на Apache2 - OS Debian 12. После изучения документации в проект были внедрены redis, сайт хостится на Daphne и в качестве обратного прокси используется Apache2, но после попытки подключиться к сокету он сразу вызывает onclose метод, не понимаю что не так.
• ASGI.py :
import os, sys
from django.core.asgi import get_asgi_application
from channels.auth import AuthMiddlewareStack
from channels.routing import ProtocolTypeRouter, URLRouter
from alyanceproject import routing
from django.urls import path
sys.path.append('/path/to/project')
sys.path.append('/path/to/app')
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'path.to.settings')
application = ProtocolTypeRouter({
"http": get_asgi_application(),
"websocket" : AuthMiddlewareStack(
URLRouter(
routing.websocket_urlpatterns
)
),
})
• routing.py:
from django.urls import path , include
from .consumers import ChatConsumer
websocket_urlpatterns = [
path("" , ChatConsumer.as_asgi())
]
• settings.py (кусок с ASGI с CHANNEL):
ASGI_APPLICATION = 'alyanceproject.asgi.application'
CHANNEL_LAYERS={
'default':{
'BACKEND':'channels_redis.core.RedisChannelLayer',
'CONFIG':{
'hosts':[
('redis-server-name',6379)
]
}
}
}
• consumers.py :
import json
from channels.generic.websocket import AsyncWebsocketConsumer
class ChatConsumer(AsyncWebsocketConsumer):
async def connect(self):
self.roomGroupName = "group_chat_gfg"
await self.channel_layer.group_add(
self.roomGroupName ,
self.channel_name
)
await self.accept()
async def disconnect(self , close_code):
await self.channel_layer.group_discard(
self.roomGroupName ,
self.channel_layer
)
• JS (кусок создающий новый Websocket) :
btnChat.onclick = async function() {
var chatSocket = new WebSocket(
'ws://' + window.location.host +'/');
chatSocket.onopen = function (e) {
console.log("Соединение успешно установлено!");
};
chatSocket.onclose = function (e) {
console.log("Возникла неожиданная ошибка при подключении к сокету!");
};
• Инфо по портам в системе:
tcp LISTEN 0 50 i.p.ser.ver:8001 0.0.0.0:* users:(("daphne",pid=192041,fd=9))
tcp LISTEN 0 511 i.p.ser.ver:6379 0.0.0.0:* users:(("redis-server",pid=11835,fd=6))
tcp LISTEN 0 511 *:80 *:* users:(("apache2",pid=191971,fd=4),("apache2",pid=191969,fd=4),("apache2",pid=191968,fd=4))
tcp LISTEN 0 511 *:443 *: * users:(("apache2",pid=191971,fd=6),("apache2",pid=191969,fd=6),("apache2",pid=191968,fd=6))
tcp LISTEN 0 511 [::1]:6379 [::]:* users:(("redis-server",pid=11835,fd=7))
• APACHE2 (кусок Location):
<VirtualHost *:443>
ServerName nameServer
DocumentRoot /path/to/project
#WSGIScriptAlias / /path/to/app/wsgi.py
<Location />
ProxyPass http://i.p.ser.ver:8001/
</Location>