python - 如何在Python中使用websocket api?

标签 python python-3.x websocket

我想消费以下 websocket weather api .

我尝试调整 following examples但我没有取得任何进展。

import asyncio
import websockets

async def hello():
    async with websockets.connect('ws://ws.weatherflow.com/swd/data') as websocket:

        await websocket.send({
          "type":"listen_start",
          "device_id":1110,
          "id":"2098388936"
        })

        greeting = await websocket.recv()
        print(greeting)

asyncio.get_event_loop().run_until_complete(hello())

如何在Python中使用websocket api?那就是如何获取源源不断的天气信息呢?

最佳答案

似乎缺少 api_key 参数:

来自SmartWeather documentation :

  • Websocket

    • 打开 WebSocket 连接
    • wss://ws.weatherflow.com/swd/data?api_key=20c70eae-e62f-4d3b-b3a4-8586e90f3ac8

    • 通过 websocket 连接发送 JSON 消息以开始监听来自演示设备的观察结果。发送此消息后,您连接的 websocket 客户端将每分钟收到一条新的观察 JSON 消息。

    • { "type":"listen_start", "device_id":1110, "id":"random-id-12345"}

我使用以下代码让它工作:

import asyncio
import websockets

async def hello():
    async with websockets.connect('wss://swd.weatherflow.com/swd/data?api_key=20c70eae-e62f-4d3b-b3a4-8586e90f3ac8') as websocket:
        await websocket.send('{"type":"listen_start", "device_id":1110,"id": "2098388936"}')
        greeting = await websocket.recv()
        print(greeting)

asyncio.get_event_loop().run_until_complete(hello())

注意,根据文档,这个API key是为了快速入门。不要在您的应用程序中使用此 key 。

关于python - 如何在Python中使用websocket api?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45548350/

相关文章:

python - 从满足 pandas 条件的行中获取下一个值

python - Gensim LdaMulticore 没有正确地进行多处理(仅使用 4 个 worker )

python - 如何获取多列

python - 使用文件中的关键字和文件名创建关键字字典

python - 带否定的 re.sub 语法

python - ROS 中是否可以对同一消息类型的两个主题进行时间同步?

python - 用Python编写基于浏览器的MMO服务器

ios - 无法使用自定义 CA 打开安全的 websocket

javascript - websocket 客户端发现服务器

python - 使用 BeautifulSoup 用 Python 抓取 aspx 网页