我正在通过以下简单的服务器和客户端示例学习 python-socketio。我编写了代码,它工作正常。
服务器.py
import socketio
sio = socketio.Server(async_mode='eventlet')
# Web Server Gateway Interface
app = socketio.WSGIApp(sio)
connected_clients = {}
@sio.event
def connect(sid, environ):
print(f"Sensor connected: {sid}")
print(f"Welcome, Sensor {sid}")
@sio.event
def sensor_data(sid, data):
print(f"Data from sensor {sid}: {data}")
processed_data = process_sensor_data(data)
try:
sio.emit('server_response', f'Reply from server to {sid} : {processed_data}')
except Exception as e:
print(f"Error sending data to {sid}: {e}")
@sio.event
def disconnect(sid):
print(f"Sensor disconnected: {sid}")
def process_sensor_data(data):
if 'temperature' in data:
return f"Processed temperature data: {data['temperature']} °C"
elif 'humidity' in data:
return f"Processed humidity data: {data['humidity']} %"
else:
return "Unknown sensor type"
if __name__ == '__main__':
import eventlet
print("Server started")
eventlet.wsgi.server(eventlet.listen(('0.0.0.0', 5000)), app)
客户端.py
import time
import socketio
import random
sio = socketio.Client()
@sio.event
def connect():
print("Connected to server")
while True:
temperature_data = {
'temperature': round(random.uniform(20, 30), 2)
}
sio.emit('sensor_data', temperature_data)
time.sleep(20)
@sio.event
def server_response(data):
print(f'Message from the server: {data}')
@sio.event
def disconnect():
print("Disconnected from server")
sio.connect('http://<Server-ip>:5000', transports=['websocket', 'polling'])
input("Press Enter to exit...\n")
sio.disconnect()
server.py 位于运行的 ec2 实例中,当我尝试连接服务器和客户端时,它会建立连接并开始通信,但是一旦我停止客户端,当我再次重新运行客户端时,它会给出相同的错误 IE 有时(我的意思是每运行 5 或 10 次)我会收到以下错误:
错误信息:
raise exceptions.ConnectionError(exc.args[0]) from None socketio.exceptions.ConnectionError: Connection error
问题是我使用了不同的版本,这个LINK页面解决了这个问题。