Exemplo n.º 1
0
    def eventletHandler(environ, start_response):
        pathlist = filter(bool, environ["PATH_INFO"].split("/"))
        session = pathlist[0]

        if session == "info":
            headers = {"Content-Type": "text/plain"}
            start_response("200 OK", headers.items())
            output = [
                "Things seem to be running smoothly. There are currently %s document(s) running."
                % len(list(pyscxml.sm_mapping)),
                "Session\t\tConfiguration\t\tisFinished"
            ]
            for sessionid, sm in pyscxml.sm_mapping.items():
                output.append("%s\t\t%s\t\t%s" % (sessionid, "{" + ", ".join([
                    s.id
                    for s in sm.interpreter.configuration if s.id != "__main__"
                ]) + "}", sm.isFinished()))
            return ["\n".join(output)]

        type = pathlist[1]

        if type == "websocket":
            handler = websocket.WebSocketWSGI(pyscxml.websocket_handler)
            return handler(environ, start_response)
        else:
            return pyscxml.request_handler(environ, start_response)
Exemplo n.º 2
0
    def __init__(self, app, wsgi_app, manager: 'IoTManager'):
        """
        Manager middleware for WSGI.

        :param app: Flask App object.
        :param wsgi_app: Flask App WSGI object.
        :param manager: IoTManager object.
        """
        self.app = app
        self.wsgi_app = wsgi_app
        self.manager = manager

        # eventlet websocket server handler
        self.ws = websocket.WebSocketWSGI(self.socket)
Exemplo n.º 3
0
 def __init__(self, consumer, env):
     self._consumer = consumer
     self._env = env
     self.handle = websocket.WebSocketWSGI(self.handle)
Exemplo n.º 4
0
    elif ws.path == '/range':
        for i in range(10):
            ws.send("msg %d" % i)
            eventlet.sleep(0.01)
    elif ws.path == '/error':
        # some random socket error that we shouldn't normally get
        raise socket.error(errno.ENOTSOCK)
    else:
        ws.close()


# Set a lower limit of DEFAULT_MAX_FRAME_LENGTH for testing, as
# sending an 8MiB frame over the loopback interface can trigger a
# timeout.
TEST_MAX_FRAME_LENGTH = 50000
wsapp = websocket.WebSocketWSGI(handle, max_frame_length=TEST_MAX_FRAME_LENGTH)


class TestWebSocket(tests.wsgi_test._TestBase):
    TEST_TIMEOUT = 5

    def set_site(self):
        self.site = wsapp

    def test_incomplete_headers_13(self):
        headers = dict(
            kv.split(': ') for kv in [
                "Upgrade: websocket",
                # NOTE: intentionally no connection header
                "Host: %s:%s" % self.server_addr,
                "Origin: http://%s:%s" % self.server_addr,
Exemplo n.º 5
0
            m = ws.wait()
            if m is None:
                break
            ws.send(m)
    elif ws.path == '/range':
        for i in range(10):
            ws.send("msg %d" % i)
            eventlet.sleep(0.01)
    elif ws.path == '/error':
        # some random socket error that we shouldn't normally get
        raise socket.error(errno.ENOTSOCK)
    else:
        ws.close()


wsapp = websocket.WebSocketWSGI(handle)


class TestWebSocket(tests.wsgi_test._TestBase):
    TEST_TIMEOUT = 5

    def set_site(self):
        self.site = wsapp

    def test_incomplete_headers_13(self):
        headers = dict(
            kv.split(': ') for kv in [
                "Upgrade: websocket",
                # NOTE: intentionally no connection header
                "Host: %s:%s" % self.server_addr,
                "Origin: http://%s:%s" % self.server_addr,
Exemplo n.º 6
0
 def handle_websocket(self, environ, start_response):
     wsock = websocket.WebSocketWSGI(self._handle_websocket)
     wsock(environ, start_response)