Как на Windows работать с websocket django channels?
я хочю интегрировать websocketы в свой джанго проект, при пропытке установить django channels[daphne]
пишет что нехватает модуля 'fcntl ' , но этого модуля и нет на винде, он есть только на маке или убунту наверное.
вся документация только про daphne, а все видеоуроки походу устарели, так как из них ничего не работает СОВСЕМ.
подскажите пожалуйста, что делать?
как сделать вебсокеты в джанго если у меня винда?
дело не втом что я не знаю как запустить асинхронный сервер, у меня их 2 работает на uvicorn(не предлагайте пожалуйста асинхронные сервера типа waitress и т.д.), а в том что ыебсокеты не работают нивкакую и не насираивается джанго под них почему-то.
User
GET
ws://127.0.0.1:8000/ws/chat/1/
Состояние
404
Not Found
ВерсияHTTP/1.1
Передано291 б (размер 0 б)
а на сервере ни ошибки нифига.
на данный момент я реализовал получение инфы от сервера через SSE(стрим), но эта шляпа допотопная, хорчется по человечески с вебсокетом
Дополнительно:
Возможно проще делать это на линукс - тоесть в той среде, где оно и должно хостится?
Ну или перейти на другой фреймворк или язык. Например яву, котлин, с-шарп, кложа..
чекнул разницу, буду пробовать. но вопрос по винде ещё открыт
ну кроме AD 1c
что тебе мешает место daphne попробовать другой app сервер?
и да, лучше забей на windows, еще кучу раз будешь встречать разные wtf, так как почти везде django и сопутствующие библиотеки в первую очередь делаются под линукс
asgi прорисал, и в юрл и в настройках, но это просто не работает почему-то.
например на видео у челов на винде прям в в терминале пишет, что запущен локл на asgi, у меня такого нет, буд-то видео 3х летней давности устарели на 20 лет
Ответы:
https://stackoverflow.com/a/45228507/2166371
Используйте соответствующие "компоненты" для вашей задачи. Это щас выглядит, как будто сайт разрабатывать на lua
- запустить сервер я умею на uvicorn и на waitress, но толку это не даёт. мне надо вебсокеты настроить, а они не работают нифига, одни ошибки.
у меня сервера же как-то работают асинхронные, яж не дурак совсем, чтобы не знать как запустить сервер, а в предложенном ресурсе только это и обсуждается.
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Для работы с WebSocket в Django Channels на Windows вам понадобится установить несколько дополнительных компонентов. Во-первых, убедитесь, что у вас установлен Python и pip. Затем выполните следующие шаги:
1. Установите библиотеку `channels` и `channels-redis` с помощью pip:
pip install channels channels-redispip install channels channels-redis
2. Установите Redis на вашем компьютере. Скачать Redis можно с официального сайта https://redis.io/download. После установки запустите Redis сервер.
3. Создайте файл `routing.py` в вашем приложении Django и определите маршрутизацию для WebSocket соединений:
from channels.routing import ProtocolTypeRouter, URLRouter from channels.auth import AuthMiddlewareStack from channels.http import AsgiHandler import myapp.routing application = ProtocolTypeRouter({ 'websocket': AuthMiddlewareStack( URLRouter( myapp.routing.websocket_urlpatterns ) ), 'http': AsgiHandler, })
4. Создайте файл `consumers.py` в вашем приложении Django и определите логику обработки WebSocket соединений:
from channels.generic.websocket import WebsocketConsumer class MyConsumer(WebsocketConsumer): def connect(self): # Логика при подключении клиента pass def disconnect(self, close_code): # Логика при отключении клиента pass def receive(self, text_data): # Логика при получении сообщения от клиента pass
5. Определите URL маршруты для WebSocket соединений в файле `routing.py` вашего приложения:
from django.urls import re_path from . import consumers websocket_urlpatterns = [ re_path(r'ws/myapp/$', consumers.MyConsumer.as_asgi()), ]
6. Запустите Django Channels сервер с помощью команды:
daphne myproject.asgi:application
Теперь ваше приложение Django должно успешно работать с WebSocket на Windows с использованием Django Channels. Не забудьте настроить настройки Django для использования Channels и Redis в качестве бэкенда для каналов.