【发布时间】:2020-07-10 16:07:44
【问题描述】:
这是架构拓扑:
-
一种物联网设备,用于统计人数并将数据保存到其云平台。数据可以通过 API 访问,更具体地说,它需要提供一个网络服务器端点,它可以每分钟左右推送数据。这是一个现成的产品,我无法更改数据传输方式。
-
我这边的网络服务器接收和存储数据。
由于我是 WebSockets 新手,我将上述配置解释为安装在我的网络服务器上的 WebSocket 服务器,并等待从 IoT 服务器(客户端)接收数据。
所以我在 digitalocean 中部署了一个 Linux 服务器,并启用了 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()
在这个阶段我只需要打印从 IoT 服务器推送的所有 JSON 数据包。
当我尝试在物联网服务器中设置端点地址时,它拒绝接受ws://Myserver:80,只接受HTTP://Myserver:80。显然我的服务器上没有运行任何 HTTP 服务器,因此我猜测我的服务器拒绝连接。
此外,IoT API 需要令牌 X-Auth-token 身份验证。我正在使用 WebSockets python 库,但我没有在我的服务器上设置身份验证。我在物联网服务器 API 和我的服务器上都将其保留为空。 如果我要添加令牌身份验证,websocket 服务器需要什么参数或参数?我尝试搜索 websockets 文档,但没有成功。
这不适用于生产环境!!我只是想学习。
欢迎提出任何想法。
【问题讨论】: