Вот топология архитектуры:
IoT-устройство, которое считает людей и сохраняет данные на своей облачной платформе. Доступ к данным можно получить через API и более c специальных требований, чтобы предоставить конечную точку веб-сервера, где он может sh получать данные каждую минуту или около того. Это готовый продукт, в котором я не могу изменить способ передачи данных.
Веб-сервер на моей стороне, который принимает и хранит данные.
Поскольку я новичок в WebSockets, я интерпретирую приведенную выше конфигурацию как сервер WebSocket, установленный на моем веб-сервере, и жду, пока данные будут получены от IoT-сервера (клиента).
Итак, я развернул Linux server в digitalocean и позволил серверу websocket ждать входящих подключений. Код, который я использовал для сервера:
import asyncio
import websockets
async def echo(websocket, path):
async for message in websocket:
print(message)
start_server = websockets.serve(echo, "MYSERVERIP", 80)
asyncio.get_event_loop().run_until_complete(start_server)
asyncio.get_event_loop().run_forever()
Все, что мне нужно на этом этапе, - это распечатать все JSON пакеты, отправленные с сервера IoT.
Когда я пытаюсь установить адрес конечной точки на сервере IoT, он отказывается принимать ws://Myserver:80
и принимает только HTTP://Myserver:80
. Очевидно, у меня нет HTTP-сервера, работающего на моем сервере, и поэтому я предполагаю, что подключение отклонено с моего сервера.
Кроме того, IoT API требует аутентификации токена X-Auth-token. Я использую библиотеку WebSockets python, но я не настраивал аутентификацию на своем сервере. Я оставил значение null как для API сервера IoT, так и для моего сервера. Если бы я должен был добавить аутентификацию токена, какие параметры или аргументы потребовались бы для сервера websocket? Я попытался выполнить поиск в документации по веб-сокетам, но безуспешно.
Это не для производственной среды !! Я только пытаюсь учиться.
Любые мысли приветствуются.