自定义UI开发时,如何连接Weavy的Websockets?
自定义UI集成Weavy Websockets的实现步骤
Weavy的Websockets基于标准WebSocket协议,即便用官方文档未提及的技术栈,也可以通过以下核心步骤完成集成:
1. 获取认证令牌
Weavy的WebSocket连接需要身份验证,首先得通过Weavy的REST API获取有效的access_token:
- 发送POST请求到Weavy实例的
/api/users/tokens端点 - 请求体中携带用户身份凭证(比如关联的用户ID、JWT令牌等,具体格式参考Weavy用户认证规则)
- 从响应中提取
access_token字段,后续连接WebSocket时需要用到
2. 构造WebSocket连接URL
Weavy的WebSocket端点默认是wss://<你的Weavy实例域名>/hub(自托管环境可能是ws://开头),需要在URL的查询参数中带上认证令牌:
wss://your-weavy-domain/hub?access_token=<获取到的access_token>
3. 建立连接并处理消息
使用任意支持WebSocket客户端的技术栈创建连接,监听并解析Weavy推送的JSON格式消息:
- Weavy的WebSocket消息包含
type(消息类型)、data(消息内容)等核心字段 - 常见消息类型包括
chat.message(新聊天消息)、notification(系统通知)、presence.change(用户在线状态变更)等
示例:Python中使用websockets库连接
import asyncio import websockets import json async def weavy_websocket_client(): # 替换为实际获取的access_token access_token = "your-valid-access-token" ws_url = f"wss://your-weavy-instance/hub?access_token={access_token}" try: async with websockets.connect(ws_url) as websocket: print("成功连接Weavy Websocket") async for raw_msg in websocket: msg = json.loads(raw_msg) print(f"收到消息类型: {msg['type']}") # 根据消息类型处理业务逻辑 if msg["type"] == "chat.message": print(f"新聊天消息: {msg['data']['text']}") except websockets.exceptions.InvalidStatusCode as e: if e.status_code == 401: print("认证失败,请重新获取access_token") else: print(f"连接错误: {e}") asyncio.run(weavy_websocket_client())
关键注意事项
- 令牌过期处理:
access_token会过期,当WebSocket连接因认证失败断开时,需要重新获取令牌并重连 - 消息格式兼容:Weavy的WebSocket遵循Hub协议,发送消息(比如调用Weavy的Hub方法)时,需要按照指定JSON结构发送(格式为
{"method": "方法名", "arguments": [参数列表], "invocationId": "唯一ID"}) - 错误处理:捕获连接断开、认证失败等异常,实现自动重连逻辑
- 自托管配置:如果是自托管Weavy,需确保服务器已启用WebSocket支持,端点路径与配置一致
内容的提问来源于stack exchange,提问作者Sayanta Banerjee
相关产品推荐
相关产品推荐

