You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python获取Mozzartbet实时WebSocket数据仅输出True的问题排查

问题分析:Socket.IO连接仅返回"true"无法获取实时数据流

我尝试从该站点通过WebSocket获取实时更新,编写了如下Python代码:

import websocket


def on_message(ws, message):
    print(message)

def on_close(ws, close_status_code,close_msg):
    print("closed connection")


socket = "wss://www.mozzartbet.co.ke/socket.io/?EIO=3&transport=websocket"

ws = websocket.WebSocketApp(socket,on_message= on_message, on_close=on_close)

ws.run_forever() 

但未获取到实时数据流,仅输出“true”,请问问题出在哪里?


问题根源

你用原生websocket库直接连接Socket.IO服务是行不通的——Socket.IO是基于WebSocket的上层协议,有自己的握手流程、消息编码规则和心跳机制,不是裸WebSocket连接就能直接通信的。输出的"true"只是Socket.IO连接建立后的初始响应,但你没按协议要求发送后续的订阅指令和心跳包,服务器自然不会推送实时数据。

解决办法

  1. 改用专门的Socket.IO客户端库python-socketio,它会自动处理协议细节。
  2. 先安装依赖:
pip install python-socketio[client]
  1. 重写代码(需结合抓包信息调整事件名称):
import socketio

sio = socketio.Client()

@sio.event
def connect():
    print("连接成功")
    # 这里要替换成站点实际的订阅指令,比如通过浏览器抓包查看前端发送的事件和参数
    # 示例:sio.emit('subscribe_live_sports', {'sport_id': 1})

@sio.event
def disconnect():
    print("连接断开")

# 监听服务器推送的实时数据,事件名称要和服务器实际使用的一致(需抓包获取)
@sio.on('live_event_update')  # 替换为真实事件名
def on_receive_data(data):
    print("实时更新数据:", data)

# 连接服务,指定使用websocket传输
sio.connect('wss://www.mozzartbet.co.ke/socket.io/?EIO=3', transports=['websocket'])

# 保持连接运行
sio.wait()
  1. 关键补充:打开浏览器开发者工具(Network标签→WebSocket),查看前端和服务器的通信细节:
    • 前端发送的订阅事件名称、参数
    • 服务器推送数据时使用的事件名称
    • 是否需要指定Socket.IO命名空间

内容的提问来源于stack exchange,提问作者Star Lizard

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 23:06:32