Debugging MQTT over websockets on Envoy 1.28.0

I have migrated our Envoy installation from Envoy 1.11.1 to 1.28.0, and am now also using SNI for selecting the correct certificate. A big part of that migration is upgrading the syntax of the configuration for Envoy from the v2 API to the v3 API. The upgrade went well, except for our websocket-based MQTT service…

Weiterlesen

TermiShell: a web-based shell for the Raspberry Pi (development notes)

Introduction In the course of development of PiCockpit, I am going to add a web-based Terminal called TermiShell. TermiShell icon, by: Stephanie Harvey via unsplash.com TermiShell is going to allow you to log into your Raspberry Pi using PiCockpit.com (and the picockpit-client) – no additional application required on either side. This should be very comfortable,…

Weiterlesen

Python Paho MQTT client self-signed certificates websockets, howto

Using Paho in Python with websockets and self-signed certificates for a https:// websocket connection has a couple of pitfalls, so I’m addressing this with some sample code here: import ssl import time import paho.mqtt.client as mqtt class PCPMQTTClient:     def on_connect(self, client, userdata, flags, rc):         self.connection_status = rc         if rc == 0:             self.connected_flag = True             self.connection_error_flag…

Weiterlesen

envoy not connecting to VerneMQ for MQTT over websockets, error code 503

Some quick background information for anyone running into the same issues, and how to debug them. Error code 503 This is the error code I am getting: Error during WebSocket handshake: Unexpected response code: 503. Set envoy logging to debug Here’s my docker-compose.yaml for envoy: version: ‘3.7’ services:   envoy:     build:       context: ./       dockerfile: Dockerfile     container_name:…

Weiterlesen

envoy websockets per route configuration, JavaScript test setup

In my article yesterday I discussed the configuration & test of envoy for proxying websockets at length. Today I would like to add some additional information. correct syntax for websocket upgrade per route You can enable websocket upgrade per route. No need to add it globally: – name: envoy.http_connection_manager    config:      #upgrade_configs:      #  – upgrade_type: websocket     …

Weiterlesen

envoy, docker and websockets – debugging and configuration

Websockets are an exciting technology, allowing you to upgrade a HTTP connection to a long-running persistent binary connection, which you can use to send bi-directional messages. As an aside, the MQTT protocol can be transported using websockets – which is the only (?) way for a JavaScript client delivered by the website, for instance. In…

Weiterlesen