首先,让我对 Stack Overflow 社区表示感谢——虽然我以前没有发过帖子,但我已经为过去的问题找到了无数的解决方案。我非常感谢社区投入的时间和精力,使其成为每个人的优秀资源。
我正在尝试从使用 Socket.IO 和 XHR 轮询数据的服务器获取数据。虽然我似乎可以连接到 Python 脚本,但我无法正确接收数据。
我查看了 Fiddler 中的传出和传入数据包:每隔约 5 秒,浏览器就会收到有用的信息(即 '5:::{"name":"pollData","args":["<..') ,但 Python 脚本会收到 NOOP 响应('8::')。
代码有问题的部分:
reply = requests.get(URL + "/socket.io/1/?t=" + str(long(time.time()*1000)), headers=headers)
session_id = reply.text.split(':')[0]
print "Session ID:", session_id
reply = requests.post(URL + "/socket.io/1/xhr-polling/" + session_id + "?t=" +
str(long(time.time()*1000)), data=message, headers=headers)
print "Successfully subscribed."
for i in range(5):
sleep(5)
reply = requests.get(URL + "/socket.io/1/xhr-polling/" + session_id + "?t=" +
str(long(time.time()*1000)), headers=headers)
print reply.text
我试过使用 Websocket 客户端,但它产生了这个错误:WebSocketException: Handshake Status 200
SocketIO-client 产生此错误: SocketIOError: 无法建立连接
比使用另一个库来解决这个问题更重要的是,我想了解为什么会这样。脚本和 Chrome 生成的传出数据包看起来,至少在外行看来,基本相同——为什么它们会产生如此不同的结果?
(欢迎提出任何问题或索取更多信息。)