From 103f7e8419d3a6f4f7f97265ebd4c78e335f0d08 Mon Sep 17 00:00:00 2001 From: Nicolas Jouanin Date: Sun, 2 Aug 2015 17:09:55 +0200 Subject: [PATCH] Add SSL connect to WS connection --- hbmqtt/client.py | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/hbmqtt/client.py b/hbmqtt/client.py index 069ff87..da19d54 100644 --- a/hbmqtt/client.py +++ b/hbmqtt/client.py @@ -211,7 +211,10 @@ class MQTTClient: self.session.password = uri_attributes.password self.session.remote_address = uri_attributes.hostname self.session.remote_port = uri_attributes.port - if scheme == 'mqtts': + if scheme in ('mqtt', 'mqtts') and not self.session.remote_port: + self.session.remote_port = 8883 if scheme == 'mqtts' else 1883 + + if scheme in ('mqtts', 'wss'): if self.session.cafile is None or self.session.cafile == '': self.logger.warn("TLS connection can't be estabilshed, no certificate file (.cert) given") raise ClientException("TLS connection can't be estabilshed, no certificate file (.cert) given") @@ -220,19 +223,19 @@ class MQTTClient: cafile=self.session.cafile, capath=self.session.capath, cadata=self.session.cadata) - if scheme in ('mqtt', 'mqtts') and not self.session.remote_port: - self.session.remote_port = 8883 if scheme == 'mqtts' else 1883 + # Open connection if scheme in ('mqtt', 'mqtts'): conn_reader, conn_writer = \ yield from asyncio.open_connection(self.session.remote_address, self.session.remote_port, ssl=sc) reader = StreamReaderAdapter(conn_reader) writer = StreamWriterAdapter(conn_writer) - elif scheme == 'ws': - websocket = yield from websockets.connect(self.session.broker_uri) + elif scheme == ('ws', 'wss'): + websocket = yield from websockets.connect(self.session.broker_uri, ssl=sc) reader = WebSocketsReader(websocket) writer = WebSocketsWriter(websocket) + # Handle MQTT protocol self._handler = ClientProtocolHandler(reader, writer, loop=self._loop) self._handler.attach_to_session(self.session) yield from self._handler.start()