# 第六章 – 使用WebSocket

## 目录

* [第一章 - 介绍](/mqtt/01-introduction.md)
* [第二章 – MQTT控制报文格式](/mqtt/02-controlpacketformat.md)
* [第三章 – MQTT控制报文](/mqtt/03-controlpackets.md)
* [第四章 – 操作行为](/mqtt/04-operationalbehavior.md)
* [第五章 – 安全](/mqtt/05-security.md)
* [第六章 – 使用WebSocket](/mqtt/06-websocket.md)
* [第七章 – 一致性目标](/mqtt/07-conformance.md)
* [附录B - 强制性规范声明](/mqtt/08-appendixb.md)

如果MQTT在WebSocket [\[RFC6455\]](/mqtt/06-websocket.md#RFC6455) 连接上传输，**必须**满足下面的条件：

* MQTT控制报文**必须**使用WebSocket二进制数据帧发送。如果收到任何其它类型的数据帧，接收者**必须**关闭网络连接 \[MQTT-6.0.0-1]。
* 单个WebSocket数据帧可以包含多个或者部分MQTT报文。接收者**不能**假设MQTT控制报文按WebSocket帧边界对齐 \[MQTT-6.0.0-2]。
* 客户端**必须**将字符串 **mqtt** 包含在它提供的WebSocket子协议列表里 \[MQTT-6.0.0-3]。
* 服务端选择和返回的WebSocket子协议名**必须**是 **mqtt** \[MQTT-6.0.0-4] 。
* 用于连接客户端和服务器的WebSocket URI对MQTT协议没有任何影响。

## 6.1 IANA注意事项 IANA Considerations

> 本规范请求IANA在WebSocket子协议名条目下注册WebSocket MQTT子协议，使用下列数据：

#### 图例 6.1 - IANA WebSocket标识符

| 子协议标识符 | mqtt                                                           |
| ------ | -------------------------------------------------------------- |
| 子协议通用名 | mqtt                                                           |
| 子协议定义  | <http://docs.oasis-open.org/mqtt/mqtt/v3.1.1/mqtt-v3.1.1.html> |

### 项目主页

* [MQTT协议中文版](https://github.com/mcxiaoke/mqtt)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://mcxiaoke.gitbook.io/mqtt/06-websocket.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
