Skip to main content

电传机 WebSocket 实时同步

建立连接

wss://ydzx.panretro.com/external/api/v1/teleprinter/ws/{accessToken}/{deviceId}

accessToken 需要 OAuth2 chat scope,deviceId 必须已经由该 token 所属用户通过 HTTP register 接口注册。连接成功时服务端刷新设备心跳,并返回:

{ "type": "ready", "deviceId": "paper-01" }

认证失败、设备不存在或设备不属于当前用户时,服务端发送:

{ "type": "error", "code": "UNAUTHORIZED" }

随后关闭连接。

设备发送帧

心跳

{ "type": "heartbeat" }

服务端回复同样的 heartbeat 帧,并更新在线时间。服务端每 25 秒还会发送 WebSocket Ping;客户端应自动回复 Pong。

同步设备文本

{ "type": "sync", "content": "纸带已装入。" }

messagesync 的兼容别名。成功后服务端返回:

{
"type": "synced",
"message": {
"id": 1950000000000000002,
"deviceId": "paper-01",
"direction": "from_device",
"content": "纸带已装入。"
}
}

文本不能为空,最大 2000 字符。

服务端推送帧

当网页用户或 HTTP send API 向在线设备发送文本时,设备立即收到:

{
"type": "message",
"message": {
"id": 1950000000000000003,
"deviceId": "paper-01",
"direction": "to_device",
"content": "请打印测试页。",
"delivered": 0
}
}

仅当至少一个仍打开的 WebSocket 已接收推送时,服务端才将该消息标记为已投递。设备离线或没有有效 WebSocket 时,消息保留在队列中,可通过 HTTP poll 获取。

错误帧

{ "type": "error", "code": "BAD_REQUEST" }
code含义
UNAUTHORIZEDtoken 无效、缺少 chat scope,或设备不属于当前用户
BAD_REQUESTJSON 格式、消息内容或状态不合法
UNKNOWN_FRAME不支持的 type