簡體   English   中英

將 Python socketio 服務器連接到 node js socketio 客戶端時遇到問題

[英]Trouble connecting Python socketio server to node js socketio client

我在完成一項非常簡單的任務時遇到了很多困難。 我正在嘗試在 node js 中設置 socket.io 客戶端,然后它應該與 python 中的本地 socket.io 服務器設置通信(使用這里的 python 綁定。我遇到的問題是服務器正在檢測客戶端,但客戶端似乎從未收到“連接”事件。我懷疑這是我異步部署服務器的方式的問題,但我真的不確定。每個文件的代碼如下:

服務器.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)

客戶端.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 客戶端中完成的操作。

好吧,我最終從 socket.io-client 3.00(三天前沒有看到這個主要版本)降級到 2.3.1,一切又開始工作了! 但是,基於Github上沒有列出的問題,我猜這不是影響每個人的錯誤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM