python - python-socketio 客户端无法获取公共数据,但 NodeJS socket.io-client 没有
问题描述
我正在尝试从https://www.paymium.com/public下载公开可用的数据。数据提供者在他们的网站上提供了一个关于如何使用 NodeJS 访问数据的示例。以下程序有效。
var io = require('socket.io-client');
var socket = io.connect('https://www.paymium.com/public', {
path: '/ws/socket.io'
});
console.log('CONNECTING');
socket.on('connect', function() {
console.log('CONNECTED');
console.log('WAITING FOR DATA...');
});
socket.on('disconnect', function() {
console.log('DISCONNECTED');
});
socket.on('stream', function(publicData) {
console.log('GOT DATA:');
console.log(publicData);
});
我使用 python-socketio 实现了这个“等效”程序,但它不起作用。
import socketio
sio = socketio.Client(logger=True, engineio_logger=True)
@sio.event
def stream(publicData):
print('GOT DATA:')
print(publicData)
@sio.event
def connect():
print("CONNECTED")
print('WAITING FO DATA...')
@sio.event
def disconnect():
print("DISCONNECTED")
print('CONNECTING')
sio.connect('https://www.paymium.com/public', socketio_path='/ws/socket.io')
sio.wait()
我的 python 等效程序中缺少什么参数、回调或命名空间声明?
我使用 npm socket.io-client 2.3.0、python 3.7.6 和 python-socketio 4.6.0 在 macOS Catalina 10.15.4 上运行了这两个程序。
解决方案
您没有正确翻译 JavaScript 客户端。这是工作的 Python 客户端代码:
import socketio
sio = socketio.Client(logger=True, engineio_logger=True)
@sio.event(namespace='/public')
def stream(publicData):
print('GOT DATA:')
print(publicData)
@sio.event(namespace='/public')
def connect():
print("CONNECTED")
print('WAITING FO DATA...')
@sio.event(namespace='/public')
def disconnect():
print("DISCONNECTED")
print('CONNECTING')
sio.connect('https://www.paymium.com', namespaces=['/public'], socketio_path='/ws/socket.io')
sio.wait()
JS 和 Python 客户端之间的主要区别在于命名空间的实现方式。
推荐阅读
- c# - 在显示之前替换字符串的值
- git - 恢复到以前版本的 git 修订版并推送它以使其成为新的头?
- python - Python Click:setuptools下的异常处理
- python - self.close_application 添加“self.close_application()”导致程序关闭
- java - 嵌套的 For 循环计数到 1-100 和 1-1000
- git - 在本地机器上的 Git 中设置“原始”URL 以使用 AWS EC2 Ubuntu 16 实例
- java - 可以在没有迭代的情况下在 HashMap 中获取、放置和删除 elemetn 导致 ConcurrentModificationException?
- cordova - navigator.camera 在 Phonegap Build 上未定义
- linux - 重启后 binfmt_misc 的设置消失了
- arrays - 根据多个条件对哈希数组进行排序和重新排列