Python-socketio: как отправить сообщение с сервера на клиент?
На сервере, так как eventlet.wsgi.server(eventlet.listen(('', 5000)), app)
блокирует следующую строку sio.emit('message', "hello")
не работает. Как отправить сообщение с сервера на клиент? Придется ли мне создавать еще одну тему?
Код моего сервера:
import socketio
import engineio
import eventlet
sio = socketio.Server()
app = socketio.WSGIApp(sio, static_files={
'/': {'content_type': 'text/html', 'filename': 'index.html'}
})
@sio.on('connect')
def connect(sid, environ):
print('connect ', sid)
@sio.on('message')
def message(sid, data):
print('message ', data)
@sio.on('disconnect')
def disconnect(sid):
print('disconnect ', sid)
if __name__ == '__main__':
eventlet.wsgi.server(eventlet.listen(('', 5000)), app)
sio.emit('message', "hello")
Мой код клиента:
import socketio
sio = socketio.Client()
@sio.on('connect')
def on_connect():
print('connection established')
@sio.on('message')
def on_message(data):
print('message received with ', data)
sio.emit('my response', {'response': 'my response'})
@sio.on('disconnect')
def on_disconnect():
print('disconnected from server')
sio.connect('http://localhost:5000')
sio.emit('message',"this is my first message")
0 ответов
У вас есть два варианта:
добавить свой выброс в
connect
обработчик, так что он запускается каждый раз, когда новый клиент подключается к вашему серверу.запустите фоновое задание, прежде чем запускать сервер и делать это оттуда.