Пример #1
0
    def __init__(self,
                 engineio_options=None,
                 client_manager_class=None,
                 logger=False,
                 binary=False):
        if client_manager_class is None:
            client_manager_class = base_manager.BaseManager
        self.manager = client_manager_class(self)
        if engineio_options is None:
            engineio_options = {}
        self.eio = engineio.Server(**engineio_options)
        self.eio.on('connect', self._handle_eio_connect)
        self.eio.on('message', self._handle_eio_message)
        self.eio.on('disconnect', self._handle_eio_disconnect)
        self.binary = binary

        self.environ = {}
        self.handlers = {}
        self.callbacks = {}

        self._binary_packet = None
        self._attachment_count = 0
        self._attachments = []

        if not isinstance(logger, bool):
            self.logger = logger
        else:
            logging.basicConfig()
            self.logger = logging.getLogger('socketio')
            if logger:
                self.logger.setLevel(logging.INFO)
            else:
                self.logger.setLevel(logging.ERROR)
Пример #2
0
def bind_websocket(app):
    if os.getenv(CONST.ENV_LIGHT_APP_WEBSOCKET, 'on') == 'off':
        return

    async_mode = 'gevent_uwsgi'
    if os.getenv(CONST.ENV_LIGHT_APP_DEV) == 'true':
        async_mode = 'gevent'

    eio = engineio.Server(async_mode=async_mode)

    @eio.on('connect')
    def connect(sid, environ):
        print('websocket connect')

        cookie = cookies.SimpleCookie(environ['HTTP_COOKIE'])
        session = websocket.create_session(app, cookie)
        websocket.connect(sid, eio, session, environ)

    @eio.on('disconnect')
    def disconnect(sid):
        print('websocket disconnect')
        websocket.disconnect(sid)

    @eio.on('message')
    def message(sid, data):
        websocket.message(sid, data)

    return eio
Пример #3
0
    def __init__(self,
                 client_manager=None,
                 logger=False,
                 binary=False,
                 json=None,
                 async_handlers=False,
                 **kwargs):
        engineio_options = kwargs
        engineio_logger = engineio_options.pop('engineio_logger', None)
        if engineio_logger is not None:
            engineio_options['logger'] = engineio_logger
        if json is not None:
            packet.Packet.json = json
            engineio_options['json'] = json
        engineio_options['async_handlers'] = False
        self.eio = engineio.Server(**engineio_options)
        self.eio.on('connect', self._handle_eio_connect)
        self.eio.on('message', self._handle_eio_message)
        self.eio.on('disconnect', self._handle_eio_disconnect)
        self.binary = binary

        self.environ = {}
        self.handlers = {}
        self.namespace_handlers = {}

        self._binary_packet = []

        if not isinstance(logger, bool):
            self.logger = logger
        else:
            self.logger = logging.getLogger('socketio')
            if not logging.root.handlers and \
                    self.logger.level == logging.NOTSET:
                if logger:
                    self.logger.setLevel(logging.INFO)
                else:
                    self.logger.setLevel(logging.ERROR)
                self.logger.addHandler(logging.StreamHandler())

        if client_manager is None:
            client_manager = base_manager.BaseManager()
        self.base_manager = base_manager.BaseManager()
        self.manager = client_manager
        self.manager_initialized = False

        self.async_handlers = async_handlers

        self.async_mode = self.eio.async_mode
Пример #4
0
def test(eio_version, payload):
    s = engineio.Server()
    start = time.time()
    count = 0
    s.handle_request({
        'REQUEST_METHOD': 'GET',
        'QUERY_STRING': eio_version,
    }, lambda s, h: None)
    sid = list(s.sockets.keys())[0]
    while True:
        environ = {
            'REQUEST_METHOD': 'POST',
            'QUERY_STRING': eio_version + '&sid=' + sid,
            'CONTENT_LENGTH': '6',
            'wsgi.input': io.BytesIO(payload)
        }
        s.handle_request(environ, lambda s, h: None)
        count += 1
        if time.time() - start >= 5:
            break
    return count
Пример #5
0
    def __init__(self,
                 client_manager_class=None,
                 logger=False,
                 binary=False,
                 **kwargs):
        if client_manager_class is None:
            client_manager_class = base_manager.BaseManager
        self.manager = client_manager_class(self)
        engineio_options = kwargs
        engineio_logger = engineio_options.pop('engineio_logger', None)
        if engineio_logger is not None:
            engineio_options['logger'] = engineio_logger
        self.eio = engineio.Server(**engineio_options)
        self.eio.on('connect', self._handle_eio_connect)
        self.eio.on('message', self._handle_eio_message)
        self.eio.on('disconnect', self._handle_eio_disconnect)
        self.binary = binary

        self.environ = {}
        self.handlers = {}
        self.callbacks = {}

        self._binary_packet = None
        self._attachment_count = 0
        self._attachments = []

        if not isinstance(logger, bool):
            self.logger = logger
        else:
            self.logger = logging.getLogger('socketio')
            if not logging.root.handlers and \
                    self.logger.level == logging.NOTSET:
                if logger:
                    self.logger.setLevel(logging.INFO)
                else:
                    self.logger.setLevel(logging.ERROR)
                self.logger.addHandler(logging.StreamHandler())
Пример #6
0
from flask import Flask, render_template

import engineio

# set async_mode to 'threading', 'eventlet' or 'gevent' to force a mode
async_mode = None

eio = engineio.Server(async_mode=async_mode)
app = Flask(__name__)
app.wsgi_app = engineio.Middleware(eio, app.wsgi_app)


@app.route('/')
def index():
    return render_template('latency.html')


@eio.on('message')
def message(sid, data):
    eio.send(sid, 'pong', binary=False)


if __name__ == '__main__':
    if eio.async_mode == 'threading':
        # deploy with Werkzeug
        app.run(threaded=True)
    elif eio.async_mode == 'eventlet':
        # deploy with eventlet
        import eventlet
        from eventlet import wsgi
        wsgi.server(eventlet.listen(('', 5000)), app)
Пример #7
0
import engineio
from gevent import pywsgi

import logging
logging.basicConfig(level=logging.DEBUG)

eio = engineio.Server()


@eio.on('message')
def message(sid, msg):
    eio.send(sid, "Server received: %s" % msg)


app = engineio.Middleware(eio)
pywsgi.WSGIServer(('', 8000), app).serve_forever()