Как работает мультиплексирование в сокетах Django? - PullRequest
0 голосов
/ 14 марта 2019

Я новичок в этой части веб-разработки и пытался найти способ создания веб-приложения с основными характеристиками, как в примере ниже:

  • Пользователь1 открывает страницу с текстовым полем (что-то, где он может добавить текст или около того), и он будет изменен, когда он решит это сделать.
    • Если у пользователя user1 есть проблемы, он может пригласить другого пользователя user2 помочь с набором текста.
    • Пользователь2 (при входе в канал / сокет) сможет изменить это поле, и сделанные изменения будут показаны пользователю1 в режиме реального времени и наоборот.

Или другой пример - комната в CodeAcademy:

  • Представьте, что я изучаю новый язык кодирования, однако в середине его я подвергаю опасности его и должен был попросить о помощи.
    • Поэтому я иду вперед и прошу помощи у другого пользователя. Этот пользователь получает доступ к странице через WebSocket (или что-то связанное с этим).
    • Пользователь помогает мне изменить мой код и добавить некоторые комментарии к нему в режиме реального времени, и я также смогу задавать вопросы через него (общение в режиме реального времени)

Мои вопросы: смогу ли я разработать определенное приложение, используя Django Channels 2 и мультиплексирование? или лучше перейти на использование NodeJS или что-то связанное с этим?

Obs: у меня больше опыта работы с python / django, так что для меня будет более продуктивным, если я найду способ работать с этим комбо.

1 Ответ

1 голос
/ 19 марта 2019

Это определенно возможно. У них будет много возможностей, но я бы порекомендовал следующее.

  1. Есть страница с включенным кодом. На странице есть некоторый JS-код websocket, который может подключаться к потребителю каналов.
  2. JS делает 2 простых вещи. Когда код обновляется на экране, отправьте сообщение Потребителю с новым текстом (вы можете оптимизировать это позже). Когда сокет получит сообщение, замените код на экране новым кодом.
  3. У вашего потребителя добавьте своего потребителя в группу каналов при подключении (группа будет содержать всех потребителей, которые обращаются к странице)
  4. Когда сообщение получено, используйте group_send, чтобы отправить его всем остальным потребителям
  5. Когда вызывается функция обратного вызова потребителя, отправьте сообщение на свой веб-сокет
...