Ejemplo n.º 1
0
def spam_coro(app):
    try:
        while True:
            yield from asyncio.sleep(1.5)
            print('spam')
            sockjs.get_manager(SOCKJS_MNGR, app).broadcast('spam')
    except asyncio.CancelledError:
        pass
Ejemplo n.º 2
0
def arduino_coro(app):
    try:
        while True:
            line = yield from app.loop.run_in_executor(None, arduino_readline,
                                                       app)
            print(line)
            sockjs.get_manager(SOCKJS_MNGR, app).broadcast(line)
    except asyncio.CancelledError:
        pass
    finally:
        app[ARDUINO_PORT].close()
Ejemplo n.º 3
0
async def sockjs_on_app_shutdown(app):
    """
    attach to the web.Application.on_shutdown signal
    to cleanup websockets on application shutdown
    http://aiohttp.readthedocs.io/en/stable/web_reference.html#aiohttp.web.Application.on_shutdown
    """
    session_manager = sockjs.get_manager('chat_update', app)
    await session_manager.clear()
    session_manager.stop()
Ejemplo n.º 4
0
def broadcast_message(topic, info):
    manager = sockjs.get_manager('clients', app)

    for session in manager.sessions:
        if not session.expired:
            if hasattr(session, 'subscriptions'):
                if topic in session.subscriptions:
                    subscription = session.subscriptions[topic]

                    headers = {}
                    headers['subscription'] = subscription
                    headers['content-type'] = 'application/json'
                    headers['message-id'] = str(uuid.uuid1())

                    body = json.dumps(info).encode('UTF-8')

                    frame = StompFrame(command='MESSAGE',
                            headers=headers, body=body)

                    session.send(bytes(frame).decode('UTF-8'))
Ejemplo n.º 5
0
def socks_backend(msg, session):
    parser = StompParser('1.1')

    if msg.data:
        parser.add(msg.data.encode('UTF-8'))

    frame = parser.get()

    manager = sockjs.get_manager('clients', app)

    if msg.tp == sockjs.MSG_OPEN:
        pass

    elif msg.tp == sockjs.MSG_MESSAGE:
        if frame.command == 'CONNECT':
            headers = {}
            headers['session'] = session.id

            msg = StompFrame(command='CONNECTED', headers=headers)

            session.send(bytes(msg).decode('UTF-8'))

            session.subscriptions = {}

        elif frame.command == 'SUBSCRIBE':
            subscription = frame.headers['id']
            session.subscriptions[frame.headers['destination']] = subscription

        elif frame.command == 'UNSUBSCRIBE':
            del session.subscriptions[frame.headers['destination']]

    elif msg.tp == sockjs.MSG_CLOSE:
        pass

    elif msg.tp == sockjs.MSG_CLOSED:
        pass
Ejemplo n.º 6
0
def close_open_connections(app):
    mngr = sockjs.get_manager(SOCKJS_MNGR, app)
    yield from mngr.clear()
    mngr.stop()
Ejemplo n.º 7
0
 def broadcastDetails(self, includeSetpoint=False):
     manager = sockjs.get_manager('%s-ws'%self.name, app)
     details = self.getDetails()
     if not includeSetpoint:
         details.pop('setpoint', None)
     manager.broadcast(details)