Browse Source

222

origin/hotfix/hlk-flight
root 4 months ago
parent
commit
5efa83a2f9
  1. 2
      app/core/websocket/adapter.py
  2. 31
      modify.md

2
app/core/websocket/adapter.py

@ -82,6 +82,7 @@ class WebSocketAdapter:
单一职责只负责数据转发不处理业务逻辑 单一职责只负责数据转发不处理业务逻辑
""" """
logger.info(f"发送循环启动: {self.client.name} (out:{self.outbound_channel.name} / in:{self.inbound_channel.name})") logger.info(f"发送循环启动: {self.client.name} (out:{self.outbound_channel.name} / in:{self.inbound_channel.name})")
logger.info(f"连接状态检查: client.is_connected={self.client.is_connected}, outbound_channel.is_connected={self.outbound_channel.is_connected}")
try: try:
while self.client.is_connected and self.outbound_channel.is_connected: while self.client.is_connected and self.outbound_channel.is_connected:
try: try:
@ -89,6 +90,7 @@ class WebSocketAdapter:
msg = await self.outbound_channel.receive_message(timeout=0.5) msg = await self.outbound_channel.receive_message(timeout=0.5)
logger.debug(f"适配器接收消息: {self.outbound_channel.name} -> msg: {msg}") logger.debug(f"适配器接收消息: {self.outbound_channel.name} -> msg: {msg}")
if msg: if msg:
logger.info(f"适配器收到消息: {self.outbound_channel.name} -> type: {msg.type}, data: {msg.data}")
# 将消息数据序列化为JSON字符串 # 将消息数据序列化为JSON字符串
import json import json
if msg.data is None: if msg.data is None:

31
modify.md

@ -869,6 +869,37 @@ class WebSocketConfig(BaseModel):
WebSocket服务器 ↔ WebSocketClient ↔ WebSocketAdapter ↔ WebSocketChannel WebSocket服务器 ↔ WebSocketClient ↔ WebSocketAdapter ↔ WebSocketChannel
``` ```
### WebSocket适配器空数据处理修复
**问题**:适配器收到 `None` 类型的消息数据时产生警告日志
**解决方案**:
1. 在适配器的 `_send_loop` 方法中添加对 `None` 值的特殊处理
2. 将警告日志改为调试日志,避免产生过多警告
**文件变更**:
- 更新 `app/core/websocket/adapter.py` - 修复空数据处理
**修改内容**:
```python
if msg.data is None:
# 如果data为None,跳过发送
logger.debug(f"适配器跳过空数据消息: {self.outbound_channel.name} -> {msg.type}")
elif isinstance(msg.data, dict):
# 正常处理字典数据
# ...
else:
# 处理其他非字典格式数据
# ...
```
**优化效果**:
- ✅ 正确处理空数据消息
- ✅ 避免产生不必要的警告日志
- ✅ 保持代码的健壮性
- ✅ 调试信息更清晰
- ✅ **添加调试日志,便于排查消息接收问题**
- ✅ **添加详细的消息内容日志,便于调试心跳消息流转**
### Channel生命周期管理完善 ### Channel生命周期管理完善
**问题**:用户指出"没有遵循单一原则是 channel.py他stop 之后能使用吗 ,二次连接webscoket 还能有吗 生命周期" **问题**:用户指出"没有遵循单一原则是 channel.py他stop 之后能使用吗 ,二次连接webscoket 还能有吗 生命周期"

Loading…
Cancel
Save