python socketio - แพ็กเก็ตเปิดไม่ถูกส่งคืนโดยเซิร์ฟเวอร์

ฉันกำลังพยายามเชื่อมต่อกับเซิร์ฟเวอร์ซ็อกเก็ต (node.js) พูด http://localhost:4300 ทางฝั่งเซิร์ฟเวอร์ได้เชื่อมต่อสำเร็จแล้ว

ในบันทึกของเซิร์ฟเวอร์ของฉัน

ลูกค้าเชื่อมต่อแล้ว {client_id}

แต่ในฝั่งไคลเอ็นต์ของฉัน (ไคลเอนต์ python-socketio) มันจะส่งคืนข้อยกเว้น

OPEN Packet ไม่ถูกส่งคืนโดยเซิร์ฟเวอร์

ใครก็ได้โปรดช่วยฉันอธิบายว่าทำไมฉันถึงได้รับข้อยกเว้นนี้ ฉันได้ทำตามที่เอกสารกล่าวว่า


person Andru Mahardi Fathurahma    schedule 25.03.2021    source แหล่งที่มา


คำตอบ (2)


นี่อาจบ่งชี้ว่าเวอร์ชันเซิร์ฟเวอร์และไคลเอนต์เข้ากันไม่ได้ สิ่งที่ใช้ได้ผลสำหรับฉันคือการปักหมุดเวอร์ชันแพ็คเกจของ python-engineio และ python-socketio:

pip install python-engineio==3.14.2 python-socketio==4.6.0

(ที่มา: https://github.com/miguelgrinberg/python-socketio/issues/586 )

เกี่ยวกับความเข้ากันได้ของเวอร์ชัน โปรดดูที่ https://python-socketio.readthedocs.io/en/latest/intro.html

person jngrt    schedule 12.07.2021

ลูกค้าติดตั้ง python-engineio-4.0.1 python-socketio-5.1.0 รหัสของฉันในไคลเอนต์คือ

import socketio

sio = socketio.Client(logger=True, engineio_logger=True)


@sio.event
def connect():
    print('connection established')


@sio.event
def my_message(data):
    print('message received with ', data)
    sio.emit('my response', {'response': 'my response'})


@sio.event
def disconnect():
    print('disconnected from server')


sio.connect(url='https://socket-io.insertmendoza.com.ar')
sio.wait()

รหัสของฉันในเซิร์ฟเวอร์คือ

import fs from 'fs'
import express from 'express'
import https from 'https'
import socket from 'socket.io'
import moment from 'moment'
import cors from 'cors'
import axios from 'axios'

const app = express()
app.use(cors())

const server = https.createServer({
  key: fs.readFileSync('/home/insert/Production/cdn/letsencrypt/live/npm-1/privkey.pem'),
  cert: fs.readFileSync('/home/insert/Production/cdn/letsencrypt/live/npm-1/fullchain.pem'),
}, app)

const users = {};

const io = socket(server)

server.listen(443, () => {
    console.log('listening on *:443', moment().format('DD/MM/YYYY HH:mm:ss'))
})

"dependencies": {
    "axios": "^0.21.1",
    "cors": "^2.8.5",
    "express": "^4.17.1",
    "moment": "^2.29.1",
    "nodemon": "^2.0.7",
    "socket.io": "3.1.2"
  },

ดีบักเทอร์มินัล

Attempting polling connection to https://socket-io.insertmendoza.com.ar/socket.io/?transport=polling&EIO=4
Polling connection accepted with {'sid': 'SZHctF0Fa0SMfEiiAAAA', 'upgrades': ['websocket'], 'pingInterval': 25000, 'pingTimeout': 5000}
Engine.IO connection established
Sending packet MESSAGE data 0
Attempting WebSocket upgrade to wss://socket-io.insertmendoza.com.ar/socket.io/?transport=websocket&EIO=4
WebSocket upgrade was successful
Received packet MESSAGE data 0{"sid":"8qEnsIwaom7Tgl8ZAAAB"}
Namespace / is connected
connection established
Received packet MESSAGE data 2["yourID","8qEnsIwaom7Tgl8ZAAAB"]
Received event "yourID" [/]
Received packet MESSAGE data 2["allUsers",{"8qEnsIwaom7Tgl8ZAAAB":"8qEnsIwaom7Tgl8ZAAAB"}]
Received event "allUsers" [/]
Received packet PING data 
Sending packet PONG data 
Received packet PING data 
Sending packet PONG data 
Received packet PING data 
Sending packet PONG data 

ในเซิร์ฟเวอร์คือ

listening on *:443 26/03/2021 17:56:00
connection Id: 8qEnsIwaom7Tgl8ZAAAB Auth: undefined IP: ::ffff:192.168.88.252 26/03/2021 18:02:20
person Nelson Javier Avila    schedule 26.03.2021