from flask import Flask, render_template import socketio # set async_mode to 'threading', 'eventlet' or 'gevent' to force a mode # else, the best mode is selected automatically from what's installed async_mode = None sio = socketio.Server(async_mode=async_mode) app = Flask(__name__) app.wsgi_app = socketio.Middleware(sio, app.wsgi_app) @app.route('/') def index(): return render_template('latency.html') @sio.on('ping_from_client') def ping(sid): sio.emit('pong_from_server', room=sid) if __name__ == '__main__': if sio.async_mode == 'threading': # deploy with Werkzeug app.run(threaded=True) elif sio.async_mode == 'eventlet': # deploy with eventlet import eventlet from eventlet import wsgi wsgi.server(eventlet.listen(('', 5000)), app) elif sio.async_mode == 'gevent': # deploy with gevent from gevent import pywsgi try: from geventwebsocket.handler import WebSocketHandler websocket = True except ImportError: websocket = False if websocket: pywsgi.WSGIServer(('', 5000), app, handler_class=WebSocketHandler).serve_forever() else: pywsgi.WSGIServer(('', 5000), app).serve_forever() else: print('Unknown async_mode: ' + sio.async_mode)