Форум программистов, компьютерный форум, киберфорум
Python: Django
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 01.05.2024
Сообщений: 1

Сокет-сервер для управления устройствами в проекте Django

01.05.2024, 18:31. Показов 492. Ответов 0

Студворк — интернет-сервис помощи студентам
Подскажите, пожалуйста, как создать в проекте django сокет-сервер, который будет связан с устройствами на клиентах (отправляя им сообщения в json в соответствии с действиями пользователя и наоборот).

Сначала пытался создание асинхронного сокет-сервера, написанного на json пытался прописать стартовым действием при запуске проекта - клиенты не могли достучаться.

Затем прочитал про channels, но приведенный тут: https://django.fun/docs/channe... al/part_2/ учебный код в Django 5.0 не работает (обещанная отправка сообщений в чат не происходит). Тем не менее попытался сделать подобное и для начала в своем приложении создал такие файлы:

consumers.py (пока код без реального назначения, проверить соединение с клиентом; хотел вначале попытаться проверить такого потребителя, с асинхронным потом попробовать):

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
from channels.consumer import SyncConsumer
 
class EchoConsumer(SyncConsumer):
    def __init__(self):
        SyncConsumer.__init__(self)
        print('Потребитель создан')
 
    def websocket_connect(self, event):
        try:
            text = str(event)
        except Exception:
            text = 'Событие без текстового представления'
        print('Connected\n', text)
 
    def websocket_receive(self, event):
        self.send({"text": event["text"],
        })
routing.py:

Python
1
2
3
4
5
6
7
from django.urls import re_path, path
 
from .consumers import EchoConsumer
 
websocket_urlpatterns = [
    path('', EchoConsumer.as_asgi()),
]
(вначале пробовал с помощью re_path и пути '/ws')

В asgi.py прописал:

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import os
 
from django.core.asgi import get_asgi_application
from channels.auth import AuthMiddlewareStack
from channels.routing import ProtocolTypeRouter, URLRouter
from .routing import websocket_urlpatterns
 
 
os.environ.setdefault('DJANGO_SETTINGS_MODULE', название_моего_проекта.settings')
 
application = ProtocolTypeRouter({
  "http": get_asgi_application(),
  "websocket": AuthMiddlewareStack(
        URLRouter(
            websocket_urlpatterns
        )
    ),
})
В папке приложения, файл startup.py (global для того, чтобы потом другие скрипты могли обращаться к consumer):

Python
1
2
3
4
5
6
7
from название_моего_проекта.consumers import EchoConsumer
from название_моего_проекта.routing import websocket_urlpatterns
 
def startup_routine():
    pass
    global consumer
    consumer = EchoConsumer()
В settings.py прописал:

Python
1
2
3
4
5
6
7
8
9
10
11
ASGI_APPLICATION = 'название_моего_проекта.asgi.application'
 
CHANNEL_LAYERS = {
    'default': {
        'BACKEND': 'channels_redis.core.RedisChannelLayer',
        'CONFIG': {
            "hosts": [('127.0.0.1', 65123),
                      ('127.0.0.1', 8000)],
        },
    },
}
При запуске python manage.oy runserver в консоль выводится 'Потребитель создан', т.е. экземпляр моего класса EchoConsumer создается.

Однако при попытке соединиться с ws://127.0.0.1:8000 со стороны клиента исключение:

websockets.exceptions.InvalidStatusCode: server rejected WebSocket connection: HTTP 200

На стороне сервера в консоль при этом выводится:

[01/May/2024 17:46:21] "GET / HTTP/1.1" 200 1950

Что мне надо исправить, чтобы сокет-сервер заработал?

Заранее спасибо.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
01.05.2024, 18:31
Ответы с готовыми решениями:

Создать сокет-сервер для связи с сокет-клиентом (телефоном на Android)
Доброго времени суток.Не могли бы вы мне подсказать, как можно создать сокет-сервер для связи с сокет-клиентом(телефоном на андроид) на...

Ищу программу для управления аудио устройствами для Windows 8.1
Собственно нужна программа для управления аудиоустройствами (колонки,наушники,мышь) Недавно поставил вместо win 7 win 8 и не могу...

Подскажите программу для простого управления звуковыми устройствами
Здравствуйте, нужна программа, с помощью которой можно перенаправить звук с компьютера в микрофон, мне нужно что-то типа виртуализации...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
01.05.2024, 18:31
Помогаю со студенческими работами здесь

Посоветуйте по разработке ПО для управления/контроля(У/К) электронными устройствами(ЭУ) на основе микроконтроллеров(МК)!
Знаком с архитектурой и asm MCS51, I8086/88-286, C и С++, правда, подзабыл со временем и изучаю Go. Знаю, что можно создать ПО на С/С++ и...

Управление HID устройствами и com в одном проекте
Добрый день Уважаемые форумчане. Имеется 4 прибора: Считыватель RFID карт (прикручено, подключено, данные вижу) Алкотестер Динго...

Сокет-сервер для чата
Есть web-чат к которому нужен надежный отказоустойчивый сокет-сервер. На чем его лучше писать ? на С# или С++ ? В чем отличие? в...

ПО управления 5-ю параллельными устройствами по Ethernet
необходимо создать программу для управления 5ю параллельными устройствами ethernet нечто вроде этой темы ...

Системы управления устройствами Cisco
Какие программы существуют для более удобного управления оборудованием фирмы cisco? с графическим интерфейсом?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru