无法将Python socketio服务器连接到节点js socketio客户端

时间:2020-11-09 00:43:13

标签: python node.js sockets socket.io

我在完成一个非常简单的任务时遇到很多困难。我正在尝试在节点js中设置socket.io客户端,然后应与python中的本地socket.io服务器设置进行通信(使用python绑定here。我遇到的问题是服务器正在检测客户端,但是客户端似乎从未收到“ connect”事件。我怀疑这是我异步部署服务器的方式的问题,但我真的不确定。每个文件的代码如下:

server.py

import socketio
from aiohttp import web

HOST = '127.0.0.1'
PORT = 10001

# create a Socket.IO server
sio = socketio.AsyncServer(async_mode='aiohttp', logger=True, engineio_logger=True)

app = web.Application()
sio.attach(app)

@sio.on('connect')
def connect(sid, environ):
    print('connect ', sid)

if __name__ == '__main__':
    web.run_app(app, host=HOST, port=PORT)

client.js

const io = require('socket.io-client');

const HOST = '127.0.0.1';
const PORT = '10001';

const socket = io(`http://${HOST}:${PORT}`);
console.log('Socket instantiated!');

socket.on('connect', () => {
    console.log(`socket connected: ${socket.connected}`);
});

我期望的输出是看到服务器打印出客户端已连接,然后让客户端打印出它也已连接。 但是,客户​​端似乎永远不会收到'connect'事件,因此永远不会在控制台上打印任何内容。

最后,服务器输出的示例是:

Server initialized for aiohttp.
======== Running on http://127.0.0.1:10001 ========
(Press CTRL+C to quit)
1c17586e4c7e49b48abefea2fba460e6: Sending packet OPEN data {'sid': '1c17586e4c7e49b48abefea2fba460e6', 'upgrades': ['websocket'], 'pingTimeout': 60000, 'pingInterval': 25000}
connect  1c17586e4c7e49b48abefea2fba460e6
1c17586e4c7e49b48abefea2fba460e6: Sending packet MESSAGE data 0

尽管客户的输出令人讨厌

$ node mySocket.js
Socket instantiated!

然后它就挂了无所事事。

我在这里显然误会了一些东西,所以先谢谢您!

小更新

我迅速使用python socketio客户端进行了测试,并成功获得了实际的连接,因此这应该将其范围缩小到我在JS客户端中完成的工作。

1 个答案:

答案 0 :(得分:0)

好吧,我最终从socket.io-client 3.00降级(没有看到3天前有这个主要版本)回到2.3.1,一切又开始正常工作了!但是,由于缺乏Github上列出的问题,我认为这不是一个会影响所有人的错误。