def connect(self, url):
     request = httpclient.HTTPRequest(url=url,
                                      connect_timeout=self.connect_timeout,
                                      request_timeout=self.request_timeout)
     ws_conn = websocket.WebSocketClientConnection(ioloop.IOLoop.current(),
                                                   request)
     ws_conn.connect_future.add_done_callback(self._connect_callback)
Exemple #2
0
    def connect(self, url, port=8080):
        """Connect to the server.
        :param str url: complete website url.
        :param int port: websocket server port (default: 8080)
        """

        # save url and port in global variables
        self.port = port
        self.url = url
        # return the website URLs hostname, i.e.: if self.url was "http://nba-stream.chatango.com" self.host would be "nba-stream"
        self.host = emulation.get_chatroom_name(self.url)
        # generate WebSocket endpoint address
        self.web_socket_endpoint = "ws://{0}:{1}".format(
            emulation.get_server_id(url),
            self.port,
        )
        # generate random 16-character unique id (required)
        self._generate_uid()
        # verify that a valid Account() instances has been passed to the global variable self.account
        #if isinstance(self.account, Account):
        if self.account:
            self.auth = self.account.login()
        else:
            raise ValueError, "You must set the global variable self.account to an Account() instance!"
        # update http-headers with authentication token(s)
        http_headers = HTTPHEADERS
        http_headers.update(self.auth)
        headers = httputil.HTTPHeaders(http_headers)
        request = httpclient.HTTPRequest(url=self.web_socket_endpoint,
                                         connect_timeout=self.connect_timeout,
                                         request_timeout=self.request_timeout,
                                         headers=headers)
        ws_conn = websocket.WebSocketClientConnection(ioloop.IOLoop.current(),
                                                      request)
        ws_conn.connect_future.add_done_callback(self._connect_callback)
Exemple #3
0
 def connect(self, url):
     headers = httputil.HTTPHeaders({'Content-Type': APPLICATION_JSON})
     request = httpclient.HTTPRequest(url=url,
                                      connect_timeout=self.connect_timeout,
                                      request_timeout=self.request_timeout,
                                      headers=headers)
     ws_conn = websocket.WebSocketClientConnection(ioloop.IOLoop.current(),
                                                   request)
     ws_conn.connect_future.add_done_callback(self._connect_callback)
Exemple #4
0
 def _connect(self):
     headers = httputil.HTTPHeaders({'Content-Type': APPLICATION_JSON})
     request = httpclient.HTTPRequest(url=self._url,
                                      connect_timeout=self.connect_timeout,
                                      request_timeout=self.request_timeout,
                                      headers=headers)
     ws_conn = websocket.WebSocketClientConnection(request)
     self._ws_connection = ws_conn
     ws_conn.connect_future.add_done_callback(self._connect_callback)
    def run(self):
        if not self.access_key:
            raise RuntimeError("Access Key was not set.")

        log.info("About to connect to %s", self.brain_api_url)

        req = HTTPRequest(self.brain_api_url,
                          connect_timeout=60,
                          request_timeout=60)
        req.headers['Authorization'] = self.access_key
        f = websockets.WebSocketClientConnection(IOLoop.current(), req)
        websocket = yield f.connect_future
        wrapped = _WrapSocket(websocket)

        input_message = None

        try:
            # The driver starts out in an unregistered... the first "next" will
            # perform the registration and all subsequent "next"s will continue
            # the operation.
            while self.driver.state != DriverState.FINISHED:

                if self.recording_file:
                    yield self._record('RECV', input_message)
                output_message = self.driver.next(input_message)
                if self.recording_file:
                    yield self._record('SEND', output_message)

                # If the driver is FINSIHED, don't bother sending and
                # receiving again before exiting the loop.
                if self.driver.state != DriverState.FINISHED:

                    if not output_message:
                        raise RuntimeError(
                            "Driver did not return a message to send.")

                    output_bytes = output_message.SerializeToString()
                    yield wrapped.send(output_bytes)

                    # Only do this part if the last message wasn't a FINISH
                    input_bytes = yield wrapped.recv()
                    if input_bytes:
                        input_message = ServerToSimulator()
                        input_message.ParseFromString(input_bytes)
                    else:
                        input_message = None

        except (websockets.WebSocketClosedError, ManualClosedException):
            code = websocket.close_code
            reason = websocket.close_reason
            log.error("Connection to '%s' is closed, code='%s', reason='%s'",
                      self.brain_api_url, code, reason)
        finally:
            if self.recording_file:
                yield self.recording_queue.put(None)
            websocket.close()
Exemple #6
0
 def connect(self, url):
     """Connect to the server.
     :param str url: server URL.
     """
     print("connnection established")
     headers = httputil.HTTPHeaders({'Content-Type': APPLICATION_JSON})
     request = httpclient.HTTPRequest(url=url, connect_timeout=self.connect_timeout,
                                      request_timeout=self.request_timeout, headers=headers)
     ws_conn = websocket.WebSocketClientConnection(ioloop.IOLoop.current(), request)
     ws_conn.connect_future.add_done_callback(self._connect_callback)
Exemple #7
0
 def connect(self, url):
     """Connect to the server.
     :param str url: server URL.
     """
     self._connect_status = self.CONNECTING
     headers = httputil.HTTPHeaders({'Content-Type': APPLICATION_JSON})
     request = httpclient.HTTPRequest(url=url,
                                      connect_timeout=self.connect_timeout,
                                      request_timeout=self.request_timeout,
                                      headers=headers)
     ws_conn = websocket.WebSocketClientConnection(self._io_loop, request)
     ws_conn.connect_future.add_done_callback(self._connect_callback)
Exemple #8
0
    def __init__(self, url, connect_timeout=DEFAULT_CONNECT_TIMEOUT,
                 request_timeout=DEFAULT_REQUEST_TIMEOUT):

        self.connect_timeout = connect_timeout
        self.request_timeout = request_timeout
        
        request = httpclient.HTTPRequest(url=url,
                                         connect_timeout=self.connect_timeout,
                                         request_timeout=self.request_timeout)
        ws_conn = websocket.WebSocketClientConnection(ioloop.IOLoop.current(),
                                                      request)
        ws_conn.connect_future.add_done_callback(self._connect_callback)
        tornado.ioloop.IOLoop.current().start()
    def connect(self, url):
        """Connect to the server.
        :param str url: server URL.
        """

        logging.info("this client attempt to connect to the server")

        self._connect_status = self.CONNECTING
        headers = httputil.HTTPHeaders({'Content-Type': APPLICATION_JSON})
        request = httpclient.HTTPRequest(url=url,
                                         connect_timeout=self.connect_timeout,
                                         request_timeout=self.request_timeout,
                                         headers=headers)
        # this set client sending and receiving max message size limit
        ws_conn = websocket.WebSocketClientConnection(request, max_message_size=1024 * 1024 * 1024)
        ws_conn.connect_future.add_done_callback(self._connect_callback)
Exemple #10
0
    def connect(self, url):
        """Connect to the server.
        :param str url: server URL.
        """

        self._ioloop = ioloop.IOLoop()
        headers = httputil.HTTPHeaders({'Content-Type': APPLICATION_JSON})
        request = httpclient.HTTPRequest(url=url,
                                         connect_timeout=self.connect_timeout,
                                         request_timeout=self.request_timeout,
                                         headers=headers)

        self.ws_conn = websocket.WebSocketClientConnection(self._ioloop,
                                                           request)

        self._ioloop.add_future(self.ws_conn.connect_future, self._connect_callback)
Exemple #11
0
    def connect(self, io_loop=None, url=None):
        """
        Connect to the server.

        :param str url: server URL.
        """
        if url is None:
            url = 'ws://localhost:8878/API-ws/'
        if io_loop is None:
            io_loop = ioloop.IOLoop.current()

        logging.info('Opening websocket to IoT-Backend: %s' % str(url))
        headers = httputil.HTTPHeaders({'Content-Type': 'application/json'})
        request = httpclient.HTTPRequest(url=url,
                                         connect_timeout=self.connect_timeout,
                                         request_timeout=self.request_timeout,
                                         headers=headers)
        ws_conn = websocket.WebSocketClientConnection(io_loop, request)
        ws_conn.connect_future.add_done_callback(self.connect_callback)
Exemple #12
0
def websocket_connect(url, io_loop=None, callback=None, connect_timeout=None):
    """Client-side websocket support.

    Takes a url and returns a Future whose result is a
    `WebSocketClientConnection`.
    """
    if io_loop is None:
        io_loop = IOLoop.current()
    request = httpclient.HTTPRequest(
        url,
        connect_timeout=connect_timeout,
        validate_cert=False,  # TODO
    )
    request = httpclient._RequestProxy(request,
                                       httpclient.HTTPRequest._DEFAULTS)
    conn = websocket.WebSocketClientConnection(io_loop, request)
    if callback is not None:
        io_loop.add_future(conn.connect_future, callback)
    return conn.connect_future
Exemple #13
0
 def connect(self):
     """Connect to the server.
     """
     url = 'wss://dev.flytbase.com/websocket'
     headers = httputil.HTTPHeaders({
         'Content-Type':
         'application/json',
         'Authorization':
         'Token ' + str(self.api_key),
         'VehicleID':
         str(self.vehicle_id)
     })
     request = httpclient.HTTPRequest(url=url,
                                      connect_timeout=self.connect_timeout,
                                      request_timeout=self.request_timeout,
                                      headers=headers)
     ws_conn = websocket.WebSocketClientConnection(ioloop.IOLoop.current(),
                                                   request)
     ws_conn.connect_future.add_done_callback(self._connect_callback)
Exemple #14
0
 def connect(self, url):
     request = httpclient.HTTPRequest(url=url)
     ws_conn = websocket.WebSocketClientConnection(request)
     ws_conn.connect_future.add_done_callback(self._connect_callback)