# set async_mode to 'threading', 'eventlet', 'gevent' or 'gevent_uwsgi' to # force a mode else, the best mode is selected automatically from what's # installed async_mode = None from flask import Flask, render_template import socketio sio = socketio.Server(async_mode=async_mode) app = Flask(__name__) app.wsgi_app = socketio.WSGIApp(sio, app.wsgi_app) @app.route('/') def index(): return render_template('latency.html') @sio.event def ping_from_client(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 import eventlet.wsgi eventlet.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() elif sio.async_mode == 'gevent_uwsgi': print('Start the application through the uwsgi server. Example:') print('uwsgi --http :5000 --gevent 1000 --http-websockets --master ' '--wsgi-file latency.py --callable app') else: print('Unknown async_mode: ' + sio.async_mode)