<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                ## MQTT [MQTT](http://mqtt.org/)是一個開源的輕量級消息協議,用于高延遲優化。該協議提供了一個可擴展的低開銷的方式,使用`publish/subscribe`模式連接設備。一個基于MQTT協議的通訊系統由發布服務器,中間人和一個或多個客戶端組成。它設計為應用于受限制的設備和低帶寬、高延遲或不可信任的網絡中。 ### 安裝 在我們開始之前,我們必須安裝所需的包: ``` $ npm i --save mqtt ``` ### 概覽 為了切換到 `MQTT` 傳輸協議,我們需要修改傳遞給該 `createMicroservice()` 函數的選項對象。 > main.ts ```typescript const app = await NestFactory.createMicroservice<MicroserviceOptions>(AppModule, { transport: Transport.MQTT, options: { url: 'mqtt://localhost:1883', }, }); ``` > `Transport` 枚舉需要從 `@nestjs/microservices` 包導入。 ### 選項 有很多可用的`options`對象可以決定傳輸器的行為。更多描述請[查看](https://github.com/mqttjs/MQTT.js)。 ### 客戶端 像其他微服務傳輸器一樣,你可以在創建`ClientProxy`實例時傳輸[一些選項](https://docs.nestjs.com/microservices/basics#client)。 一種來創建實例的方法是使用`ClientsModule`。要使用`ClientsModule`創建一個客戶端實例,引入并使用`register()`方法并傳遞一個 `options` 對象,該對象具有與前面在 `createMicroservice()` 方法具有相同的屬性。`name`屬性被用于注入`token`,更多關于`ClientsModule`內容參見[這里](https://docs.nestjs.com/microservices/basics#client)。 ```typescript @Module({ imports: [ ClientsModule.register([ { name: 'MATH_SERVICE', transport: Transport.MQTT, options: { url: 'mqtt://localhost:1883', } }, ]), ] ... }) ``` 也可以使用其他創建客戶端的實例( `ClientProxyFactory` 或 `@Client()` )。 ### 上下文 在更復雜的場景中,您可能希望訪問關于傳入請求的更多信息。在`MQTT` 中,您可以訪問 `MqttContext`對象。 ```typescript @MessagePattern('notifications') getNotifications(@Payload() data: number[], @Ctx() context: MqttContext) { console.log(`Topic: ${context.getTopic()}`); } ``` > `@Payload()`, `@Ctx()` 和 `MqttContext` 需要從 `@nestjs/microservices` 包導入. ### 通配符 一個訂閱可能是一個顯式的`topic`或者包含通配符,`+`和`#`兩個通配符可以用在這里,`+`表示單層通配符而 `#`表示多層通配符,可以涵蓋很多`topic`層次。 ```typescript @MessagePattern('sensors/+/temperature/+') getTemperature(@Ctx() context: MqttContext) { console.log(`Topic: ${context.getTopic()}`); } ``` ### 記錄建設者 要配置消息選項(調整 `QoS` 級別、設置 `Retain` 或 `DUP` 標志,或向負載添加其他屬性),您可以使用 `MqttRecordBuilder` 類。例如,要將 `QoS` 設置為 2,請使用 `setQoS` 方法,如下所示: ~~~typescript const userProperties = { 'x-version': '1.0.0' }; const record = new MqttRecordBuilder(':cat:') .setProperties({ userProperties }) .setQoS(1) .build(); client.send('replace-emoji', record).subscribe(...); ~~~ > **提示** `MqttRecordBuilder` 類是從 `@nestjs/microservices` 包中導出的。 您也可以通過訪問 `MqttContext` 在服務器端讀取這些選項。 ~~~typescript @MessagePattern('replace-emoji') replaceEmoji(@Payload() data: string, @Ctx() context: MqttContext): string { const { properties: { userProperties } } = context.getPacket(); return userProperties['x-version'] === '1.0.0' ? '??' : '??'; } ~~~ 在某些情況下,您可能希望為多個請求配置用戶屬性,您可以將這些選項傳遞給 `ClientProxyFactory`。 ~~~typescript import { Module } from '@nestjs/common'; import { ClientProxyFactory, Transport } from '@nestjs/microservices'; @Module({ providers: [ { provide: 'API_v1', useFactory: () => ClientProxyFactory.create({ transport: Transport.MQTT, options: { url: 'mqtt://localhost:1833', userProperties: { 'x-version': '1.0.0' }, }, }), }, ], }) export class ApiModule {} ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看