Надежная связь между сервером и клиентом в python

#python #rest #notifications #backend #pyfcm

#python #rest #уведомления #серверная часть #pyfcm

Вопрос:

Пытаюсь создать надежную связь между сервером и клиентом в python. потери и задержки приема должны быть как можно ниже. Вот моя мысль,

  • клиент замечает сервер (DNS) при подключении к Интернету
  • сервер сохраняет IP-адрес клиента
  • широковещательная передача данных 1 на сохраненные IP-адреса
  • клиент подтверждает сообщение msg idx на сервер
  • повторная отправка сервера до подтверждения клиентом (с таймаутом)
  • сервер удаляет IP, если 3 широковещательные передачи без подтверждения

где данные (json / df / db):

  • data1: идентификатор сообщения и широковещательный сообщение
  • data2: ip, идентификатор последнего сообщения и временная метка подключения

Теперь, просто хочу сделать это простым, но хочу, чтобы его можно было расширять. Существует ли какая-либо общая практика для этого? в будущем может потребоваться серверная часть (REST). Ранее я думал, что уведомление FCM может удовлетворить мои потребности, но, похоже, не так много ресурсов, связанных с python, для запуска. Пожалуйста, сообщите, достаточно ли хороша приведенная выше идея.

Комментарии:

1. Использовать TCP для вашего общения?

2. Вы могли бы использовать Socket.IO . Работает очень быстро и очень надежно.

3. хорошо, TCP может упростить шаги в моем потоке. В общем, без acc mgmt я больше беспокоюсь о потере пакетов / рассинхронизации данных на клиенте. поэтому я не уверен, что должен делать это сам на python или через api / серверную часть с помощью sth, например, push-уведомления.

4. TCP является «надежным», что означает, что не должно быть потери ваших данных (если соединение не прерывается в середине передачи). Однако это потоковый протокол без отдельных пакетов. Если вам нужна надежность, подобная TCP, с дейтаграммами, используйте SOCK_SEQPACKET if supporten.