服务器到服务器的Websocket通信



以下是架构拓扑:

  1. 一种物联网设备,可对人员进行计数并将数据保存到其云平台。数据可以通过API访问,更具体地说,它需要提供一个Web服务器端点,在那里它可以每分钟左右推送数据。这是一个现成的产品,我无法更改数据传输方法。

  2. 我这边的一个Web服务器,它接收并存储数据。

由于我是WebSocket的新手,我将上述配置解释为安装在我的Web服务器上的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数据包。

当我尝试在IoT服务器中设置端点地址时,它拒绝接受ws://Myserver:80,只接受HTTP://Myserver:80。很明显,我的服务器上没有运行任何HTTP服务器,因此我猜我的服务器拒绝了连接。

此外,物联网API需要令牌X-Auth-to-ken身份验证。我正在使用WebSockets python库,但我没有在服务器上设置身份验证。我在物联网服务器API和我的服务器上都将其保留为空。如果我要添加令牌身份验证,那么websocket服务器需要什么参数或自变量?我试着搜索websockets文档,但没有成功。

这不适用于生产环境!!我只是想学习。

欢迎有任何想法。

因此这些是要求:

  1. 一种物联网设备,可对人员进行计数并将数据保存到云端站台数据可以通过API访问,更具体的是需要提供一个可以推送数据的Web服务器端点每分钟左右
  2. 我这边的一个接收和存储的Web服务器数据

他们需要每分钟左右刷新一次数据。在我看来,websocket只是实时的。

也就是说,我提出的解决方案是使用消息代理。我认为它比直接处理websocket更容易,而且你不必一直关心保持带电的套接字连接(在物联网世界中,这在能源方面并不高效(。

换句话说,请改用Pub/Sub体系结构。您的物联网设备数据发布到Message Broker(常见的是RabbitMQ(,然后您构建一个服务器,订阅到Broker,消耗其数据并存储它。

现在,每个设备只有在有可用数据的情况下才能连接到云,这节省了能源。协议可以是MQTT或HTTP,MQTT在物联网世界中经常使用。

相关:Pub子消息传递有利于

最新更新