Uploaded image for project: 'OASIS Message Queuing Telemetry Transport (MQTT) TC'
  1. OASIS Message Queuing Telemetry Transport (MQTT) TC
  2. MQTT-1

Flowing MQTT V3.1.1 protocol over a WebSocket

    XMLWordPrintable

    Details

    • Type: New Feature
    • Status: Closed
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: 3.1.1
    • Fix Version/s: 3.1.1
    • Component/s: core
    • Labels:
      None
    • Environment:

      Web browser

    • Proposal:
      Hide

      Add an Appendix to describe MQTT protocol over websocket connections.

      MQTT can be transported over a WebSocket connection using the following conventions:

      • WebSocket binary frames are used. A single frame may contain multiple or partial MQTT Control Packets; they are not required to be aligned.
      • The WebSocket Protocol Name consists of the MQTT Protocol Name concatenated with the ASCII representation of the MQTT Protocol Version number. For MQTT v3.1.1, this will be "MQTT4".
      • No restriction is placed on the path portion of the WebSocket url

      Note to editors: need to add references to the WebSocket RFC

      Show
      Add an Appendix to describe MQTT protocol over websocket connections. MQTT can be transported over a WebSocket connection using the following conventions: WebSocket binary frames are used. A single frame may contain multiple or partial MQTT Control Packets; they are not required to be aligned. The WebSocket Protocol Name consists of the MQTT Protocol Name concatenated with the ASCII representation of the MQTT Protocol Version number. For MQTT v3.1.1, this will be "MQTT4". No restriction is placed on the path portion of the WebSocket url Note to editors: need to add references to the WebSocket RFC

      Description

      Constraints and considerations for flowing MQTT binary protocol over a Websocket, RFC 6455.

      See also http://wiki.eclipse.org/Paho/Paho_Websockets

      Making MQTT over Websockets inter-operable:

      Must support WebSockets as defined by RFC 6455
      Must use websocket binary frames.
      This enables MQTT v3,1 per the specification to flow over websockets with no change to the MQTT packets
      Must use "mqttv3.1" as the websocket protocol name.
      This is applicable when creating the websocket: e.g. new WebSocket(wsurl, 'mqttv3.1')
      The path portion of the url specified on the MQTT connect should be "mqtt"
      For instance ws://m2m.eclipse.org:800/mqtt . mqtt should be the default with the option for an alternative to be configured / specified

      Open points for further discussion:

      Should an MQTT packet be aligned with a WebSocket frame? Should MQTT Protocol messages be sent exactly one per frame or should the framing be arbitrary with multiple or partial MQTT messages per frame with no frame alignment.?

        Attachments

          Activity

            People

            • Assignee:
              Unassigned
              Reporter:
              andrew_banks Andrew Banks (Inactive)
            • Watchers:
              1 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: