I am trying to connect to a data streaming API and below is an extract from the API documentation (in red italics).
Connection to the message broker is made using a Websocket connection and the message broker makes use of the MQTT protocol.
So my initial obstacle is that I understand that jMQTT does not support a websocket connection used by the API and so I am wondering if there is a workaround.
I have successfully made the separate authorization call which returned a number of things required to make the connection:
Any suggestions on how I can use B4J to access this API would be greatly appreciated, but I fear this project may have hit a roadblock which I'll be unable to overcome.
Thanks,
Bryon
Connection to the message broker is made using a Websocket connection and the message broker makes use of the MQTT protocol.
So my initial obstacle is that I understand that jMQTT does not support a websocket connection used by the API and so I am wondering if there is a workaround.
I have successfully made the separate authorization call which returned a number of things required to make the connection:
- An endpoint parameter
This is an authorized url where you make a websocket connection to the message broker. - A client identifier
This is the identifier you must use when connection to the message broker. - A list of topics
For each permission scope you requested you will receive a topic that you can subscribe/publish to.
Python:
urlparts = urlparse(connection_url)
host = urlparts.netloc
client = Client(client_id=client_id, transport="websockets")
client.tls_set()
headers = {'host': host, 'Host': host}
client.ws_set_options(
path="{}?{}".format(urlparts.path, urlparts.query),
headers=headers
)
client.on_connect = _on_connect
client.on_message = _on_message
client.connect(host, 443, 15)
client.loop_start()
def _on_connect(client, userdata, flags, connection_result):
print("connected")
def _on_message(client, userdata, msg):
print("received message {}".format(msg))
Any suggestions on how I can use B4J to access this API would be greatly appreciated, but I fear this project may have hit a roadblock which I'll be unable to overcome.
Thanks,
Bryon