我在完成一个非常简单的任务时遇到很多困难。我正在尝试在节点js中设置socket.io客户端,然后应与python中的本地socket.io服务器设置进行通信(使用python绑定here。我遇到的问题是服务器正在检测客户端,但是客户端似乎从未收到“ connect”事件。我怀疑这是我异步部署服务器的方式的问题,但我真的不确定。每个文件的代码如下:
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)
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客户端中完成的工作。
答案 0 :(得分:0)
好吧,我最终从socket.io-client 3.00降级(没有看到3天前有这个主要版本)回到2.3.1,一切又开始正常工作了!但是,由于缺乏Github上列出的问题,我认为这不是一个会影响所有人的错误。