python-socketio客户端无法获取公共数据,但NodeJS socket.io-client无法获得

问题描述 投票:0回答:1

我正在尝试从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上运行了两个程序。

python node.js websocket python-socketio
1个回答
0
投票

您尚未对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客户端之间的主要区别在于名称空间的实现方式。

© www.soinside.com 2019 - 2024. All rights reserved.