现在我要更改on_message,我自己的服务器没有code和sid,直接会返回
时间: 2024-11-09 14:20:30 浏览: 23
为了适应您自己的服务器响应格式,需要对 `on_message` 方法进行调整。假设您的服务器直接返回识别结果,而不会像讯飞云那样返回带有 `code` 和 `sid` 的 JSON 响应,您可以将方法修改如下:
```python
def on_message(self, ws, message):
try:
# 直接解析消息为JSON
data = json.loads(message)
# 如果有异常情况,直接打印错误信息
if "error" in data:
print(f"Error received from server: {data['error']}")
return
# 获取并拼接最终结果
results = data.get("results", "")
self.finalResults += results
# 标记完成状态
self.done = True
except Exception as e:
print(f"Receive msg, but parse exception: {e}")
# 处理WebSocket关闭的情况
if self.__closing:
try:
self.__ws.close()
except Exception as e:
print(f"Close WebSocket error: {e}")
```
### 修改说明:
1. **删除了 `code` 和 `sid` 的检查**:因为您的服务器不提供这些字段。
2. **增加了对 `error` 字段的检查**:如果服务器返回了错误信息,则直接打印出来。
3. **获取并拼接识别结果**:假设服务器返回的结果在 `results` 字段中,将其添加到 `finalResults` 中。
4. **标记任务完成**:当收到完整的消息后,设置 `done` 为 `True`,表示识别任务已完成。
5. **处理关闭逻辑**:如果正在关闭连接,尝试关闭 WebSocket。
这样修改后,`on_message` 方法可以更好地适配您的服务器响应格式。如果您服务器的具体响应格式有所不同,请根据实际情况进一步调整。
阅读全文