websocketblazormqttmqttnet

blazor mqttnet connection fails due to ws vs wss


I'm coding an application in blazor using MQTTNET nuget to connect to hivemq (a public free server)

If I connect without WithTls() It does work when debugging locally but once I upload to github pages it fails because "a https tried to connect to a ws server, it should connect to wss instead".

If I add the Tls it does not connect: Unable to connect to the remote server I tried searching if hivemq has a different address for wss or something but could not find out.

This is the code I'm using, mostly copied from the MQTTNET wiki

mqttClientOptions = new MqttClientOptionsBuilder()
                    .WithClientId(ClientID)
                    .WithWebSocketServer("broker.hivemq.com:8000/mqtt")
                    .WithTls() //with Tls it does not connect, but no error is thrown
                    .Build();

var result = await mqttClient.ConnectAsync(mqttClientOptions, CancellationToken.None);


Solution

  • If you add .WithTls() you will also need to change the port number.

    From HiveMQ's website:

    MQTT connection settings 
    Host: broker.hivemq.com 
    TCP Port: 1883
    Websocket Port: 8000 
    TLS TCP Port: 8883 
    TLS Websocket Port: 8884