我正在使用andsocket.io
的 python-react 应用程序中使用。客户端在连接到服务器时和触发事件之前显示错误。python-socketio
socket.io-client
connect
服务器:
import asyncio
from aiohttp import web
import socketio
from aiohttp_middlewares import cors_middleware
from aiohttp_middlewares.cors import DEFAULT_ALLOW_HEADERS
sio = socketio.AsyncServer(async_mode='aiohttp',cors_allowed_origins='*')
app=web.Application()
sio.attach(app)
async def index(request):
return web.Response(text="hello", content_type='text/html')
@sio.event
async def connect(sid, environ):
print('Client connected',sid)
await sio.emit('message', "good")
@sio.event
def disconnect(sid):
print('Client disconnected',sid)
@sio.on('message')
async def print_message(sid, message):
print("Socket ID: " , sid)
print(message)
app.router.add_get('/', index)
if __name__ == '__main__':
web.run_app(app)
客户端(反应):
import io from "socket.io-client"
let socket;
.
.
.
componentDidMount(){
socket = io('http://localhost:8080/', {transports:['websocket'], upgrade:false});
socket.on('connect', ()=> {
socket.on('message',(data)=>{console.log(data)})
});
socket.on('disconnect', () => {
console.log(socket.connected);
});
}
控制台中打印的错误:
这些文件与socket.io-client
Uncaught TypeError: Cannot read property 'sid' of undefined
at Socket.onpacket (socket.js:189)
at Manager.<anonymous> (index.js:21)
at Manager.push../node_modules/component-emitter/index.js.Emitter.emit (index.js:145)
at Manager.ondecoded (manager.js:209)
at Decoder.<anonymous> (index.js:21)
at Decoder.push../node_modules/component-emitter/index.js.Emitter.emit (index.js:145)
at Decoder.add (index.js:117)
at Manager.ondata (manager.js:201)
at Socket.<anonymous> (index.js:21)
at Socket.push../node_modules/component-emitter/index.js.Emitter.emit (index.js:145)
at Socket.onPacket (socket.js:387)
at WS.<anonymous> (socket.js:196)
at WS.push../node_modules/component-emitter/index.js.Emitter.emit (index.js:145)
at WS.onPacket (transport.js:103)
at WS.onData (transport.js:96)
at WebSocket.ws.onmessage (websocket.js:115)