我在服务器端有python flask,在客户端有js。我想在没有客户请求的情况下向客户端发送一些日志。我正在尝试使用flask socket.io插件实现它。
一切看起来都不错,谢谢以下博客。 https://blog.miguelgrinberg.com/post/easy-websockets-with-flask-and-gevent
但是我可以看到定期轮询进入服务器并且响应时间太长。每次民意调查都需要近5秒。这也延迟了我的其他AJAX调用。 可能是什么原因?
服务器端 -
@socketio.on('connect', namespace='/test')
def connect():
global thread
with thread_lock:
if thread is None:
thread = socketio.start_background_task(target=background_thread)
socketio.emit('server_msg',
{'cause': 'connection', 'status': 'Success', 'count': len(CLIENT.keys())},
namespace='/test')
@socketio.on('client_msg', namespace='/test')
def client_msg(msg):
print(msg) # TODO: process this msg
def background_thread():
count = 0
while True:
socketio.sleep(5)
count += 1
socketio.emit('my_response',
{'data': 'Server generated event', 'count': count},
namespace='/test')
Clinet方面 -
namespace = '/test';
var socket = io.connect(location.protocol + '//' + document.domain + ':' + location.port + namespace);
socket.on('connect', function () {
socket.emit('client_msg', {cause: 'connection', details: location});
});
socket.on('server_msg', function (msg) {
writeLog('log', 'Received ' + msg.cause + ' ' + msg.status)
});
socket.emit('client_msg', {cause: 'connection', details: location});
网络流量 -