【问题标题】:Python-socketio: How to emit message from server to client?Python-socketio:如何从服务器向客户端发送消息?
【发布时间】:2019-07-09 06:17:33
【问题描述】:

在服务器上,由于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")

【问题讨论】:

    标签: python python-3.x python-2.7 python-sockets python-socketio


    【解决方案1】:

    你有两个选择:

    1. 将您的发出添加到 connect 处理程序,以便每次新客户端连接到您的服务器时它都会运行。

    2. 在启动服务器之前启动后台任务并从那里执行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-06-24
      • 2017-01-12
      • 1970-01-01
      • 1970-01-01
      • 2016-09-10
      • 1970-01-01
      相关资源
      最近更新 更多