跳转至

WebSocket 终端

创建 WebSocket 第三方终端

有两种方法:

  1. 【推荐】使用连接器 DGLabWSConnect 创建 WebSocket 终端 DGLabWSClient
  2. 手动创建 WebSocket 终端 DGLabWSClient 对象, 并在异步上下文管理(即 async with 中使用)

参数说明

DGLabWSConnect

DGLabWSConnect(uri: str, register_timeout: float = None, **kwargs)

Parameters:

Name Type Description Default
uri str

WebSocket 服务端 Uri

required
register_timeout float

终端注册(获取 clientId)超时时间

None
kwargs

:class:websockets.client.connect 的其他参数

{}

Raises:

Type Description
asyncio.Timeout

终端注册(获取 clientId)超时

DGLabWSClient

DGLabWSClient(websocket: WebSocketClientProtocol, register_timeout: float = None)

Bases: DGLabClient

Parameters:

Name Type Description Default
websocket WebSocketClientProtocol

与 WebSocket 服务端的连接

required
register_timeout float

终端注册(获取 clientId)超时时间

None

Raises:

Type Description
asyncio.Timeout

终端注册(获取 clientId)超时

示例

方法 1

from pydglab_ws import DGLabWSConnect

async def main():
    async with DGLabWSConnect("ws://192.168.1.161:5678") as client:
        # 获取二维码
        _ = client.get_qrcode()
        ...
        # 等待绑定
        await client.bind()
        print(f"已与 App {client.target_id} 成功绑定")
        ...

方法 2

from websockets.client import connect
from pydglab_ws import DGLabWSClient

async def main():
    async with connect("ws://192.168.1.161:5678") as websocket:
        async with DGLabWSClient(websocket) as client:
            # 获取二维码
            _ = client.get_qrcode()
            ...
            # 等待绑定
            await client.bind()
            print(f"已与 App {client.target_id} 成功绑定")
            ...

获取终端的 WebSocket 连接对象

可用属性

websocket property

websocket: WebSocketClientProtocol

终端的 WebSocket 连接对象

可用来获取连接延迟等信息,但不建议调用它的 recv, send 等方法,可能会影响 DGLabWSClient 的各项功能

示例

from pydglab_ws import DGLabWSConnect

async def main():
    async with DGLabWSConnect("ws://192.168.1.161:5678") as client:
        print(f"与服务端的延迟为 {client.websocket.latency} 秒")
        ...