<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Client on Grafana Labs</title><link>https://grafana.com/docs/k6/v2.3.x/javascript-api/k6-x-mqtt/client/</link><description>Recent content in Client on Grafana Labs</description><generator>Hugo -- gohugo.io</generator><language>en</language><atom:link href="/docs/k6/v2.3.x/javascript-api/k6-x-mqtt/client/index.xml" rel="self" type="application/rss+xml"/><item><title>Client.connect( url, [options] )</title><link>https://grafana.com/docs/k6/v2.3.x/javascript-api/k6-x-mqtt/client/connect/</link><pubDate>Mon, 21 Sep 2026 15:16:28 +0000</pubDate><guid>https://grafana.com/docs/k6/v2.3.x/javascript-api/k6-x-mqtt/client/connect/</guid><content><![CDATA[&lt;h1 id=&#34;clientconnect&#34;&gt;Client.connect()&lt;/h1&gt;
&lt;p&gt;Establishes a connection to an MQTT broker. When the connection is successfully established, the &lt;code&gt;connect&lt;/code&gt; event is triggered.&lt;/p&gt;
&lt;h2 id=&#34;signature&#34;&gt;Signature&lt;/h2&gt;
&lt;!-- md-k6:skipall --&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;JavaScript&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-javascript&#34;&gt;client.connect(url, options)&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h2 id=&#34;parameters&#34;&gt;Parameters&lt;/h2&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th style=&#34;text-align: left&#34;&gt;Parameter&lt;/th&gt;
              &lt;th style=&#34;text-align: left&#34;&gt;Type&lt;/th&gt;
              &lt;th style=&#34;text-align: left&#34;&gt;Description&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;url&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;string&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;Broker URL (for example, &lt;code&gt;mqtt://broker.emqx.io:1883&lt;/code&gt;)&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;options&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;object&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;Optional connection configuration&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;options.keepalive&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;number&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;Keep-alive interval in seconds (default: 60)&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;options.connect_timeout&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;number&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;Connection timeout in milliseconds (default: 30000)&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;options.clean_session&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;boolean&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;Whether to start with a clean session (default: true)&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;options.servers&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;string[]&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;Array of broker URLs for failover&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;options.tags&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;object&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;Custom tags for metrics (key-value pairs)&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;h2 id=&#34;supported-broker-url-schemas&#34;&gt;Supported broker URL schemas&lt;/h2&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th style=&#34;text-align: left&#34;&gt;Schema&lt;/th&gt;
              &lt;th style=&#34;text-align: left&#34;&gt;Description&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;mqtt://&lt;/code&gt;&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;Plain TCP connection (no encryption)&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;mqtts://&lt;/code&gt;&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;Secure connection over SSL/TLS&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;tcp://&lt;/code&gt;&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;Alias for &lt;code&gt;mqtt://&lt;/code&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;ssl://&lt;/code&gt;&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;Alias for &lt;code&gt;mqtts://&lt;/code&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;tls://&lt;/code&gt;&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;Alias for &lt;code&gt;mqtts://&lt;/code&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;ws://&lt;/code&gt;&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;MQTT over WebSocket&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;wss://&lt;/code&gt;&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;MQTT over secure WebSocket&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;p&gt;If the schema is omitted, &lt;code&gt;mqtt://&lt;/code&gt; is used as the default.&lt;/p&gt;
&lt;h2 id=&#34;ssltls-configuration&#34;&gt;SSL/TLS configuration&lt;/h2&gt;
&lt;p&gt;The extension uses standard 
    &lt;a href=&#34;/docs/k6/v2.3.x/using-k6/protocols/ssl-tls/&#34;&gt;k6 TLS configuration&lt;/a&gt; for all SSL/TLS settings. Configure certificates, verification, and other TLS-related options using k6&amp;rsquo;s environment variables and configuration files.&lt;/p&gt;
]]></content><description>&lt;h1 id="clientconnect">Client.connect()&lt;/h1>
&lt;p>Establishes a connection to an MQTT broker. When the connection is successfully established, the &lt;code>connect&lt;/code> event is triggered.&lt;/p>
&lt;h2 id="signature">Signature&lt;/h2>
&lt;!-- md-k6:skipall -->
&lt;div class="code-snippet ">&lt;div class="lang-toolbar">
&lt;span class="lang-toolbar__item lang-toolbar__item-active">JavaScript&lt;/span>
&lt;span class="code-clipboard">
&lt;button x-data="app_code_snippet()" x-init="init()" @click="copy()">
&lt;img class="code-clipboard__icon" src="/media/images/icons/icon-copy-small-2.svg" alt="Copy code to clipboard" width="14" height="13">
&lt;span>Copy&lt;/span>
&lt;/button>
&lt;/span>
&lt;div class="lang-toolbar__border">&lt;/div>
&lt;/div>&lt;div class="code-snippet ">
&lt;pre data-expanded="false">&lt;code class="language-javascript">client.connect(url, options)&lt;/code>&lt;/pre>
&lt;/div>
&lt;/div>
&lt;h2 id="parameters">Parameters&lt;/h2>
&lt;section class="expand-table-wrapper">&lt;div class="button-div">
&lt;button class="expand-table-btn">Expand table&lt;/button>
&lt;/div>&lt;div class="responsive-table-wrapper">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th style="text-align: left">Parameter&lt;/th>
&lt;th style="text-align: left">Type&lt;/th>
&lt;th style="text-align: left">Description&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td style="text-align: left">url&lt;/td>
&lt;td style="text-align: left">string&lt;/td>
&lt;td style="text-align: left">Broker URL (for example, &lt;code>mqtt://broker.emqx.io:1883&lt;/code>)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align: left">options&lt;/td>
&lt;td style="text-align: left">object&lt;/td>
&lt;td style="text-align: left">Optional connection configuration&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align: left">options.keepalive&lt;/td>
&lt;td style="text-align: left">number&lt;/td>
&lt;td style="text-align: left">Keep-alive interval in seconds (default: 60)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align: left">options.connect_timeout&lt;/td>
&lt;td style="text-align: left">number&lt;/td>
&lt;td style="text-align: left">Connection timeout in milliseconds (default: 30000)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align: left">options.clean_session&lt;/td>
&lt;td style="text-align: left">boolean&lt;/td>
&lt;td style="text-align: left">Whether to start with a clean session (default: true)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align: left">options.servers&lt;/td>
&lt;td style="text-align: left">string[]&lt;/td>
&lt;td style="text-align: left">Array of broker URLs for failover&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align: left">options.tags&lt;/td>
&lt;td style="text-align: left">object&lt;/td>
&lt;td style="text-align: left">Custom tags for metrics (key-value pairs)&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;/section>&lt;h2 id="supported-broker-url-schemas">Supported broker URL schemas&lt;/h2>
&lt;section class="expand-table-wrapper">&lt;div class="button-div">
&lt;button class="expand-table-btn">Expand table&lt;/button>
&lt;/div>&lt;div class="responsive-table-wrapper">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th style="text-align: left">Schema&lt;/th>
&lt;th style="text-align: left">Description&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td style="text-align: left">&lt;code>mqtt://&lt;/code>&lt;/td>
&lt;td style="text-align: left">Plain TCP connection (no encryption)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align: left">&lt;code>mqtts://&lt;/code>&lt;/td>
&lt;td style="text-align: left">Secure connection over SSL/TLS&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align: left">&lt;code>tcp://&lt;/code>&lt;/td>
&lt;td style="text-align: left">Alias for &lt;code>mqtt://&lt;/code>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align: left">&lt;code>ssl://&lt;/code>&lt;/td>
&lt;td style="text-align: left">Alias for &lt;code>mqtts://&lt;/code>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align: left">&lt;code>tls://&lt;/code>&lt;/td>
&lt;td style="text-align: left">Alias for &lt;code>mqtts://&lt;/code>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align: left">&lt;code>ws://&lt;/code>&lt;/td>
&lt;td style="text-align: left">MQTT over WebSocket&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align: left">&lt;code>wss://&lt;/code>&lt;/td>
&lt;td style="text-align: left">MQTT over secure WebSocket&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;/section>&lt;p>If the schema is omitted, &lt;code>mqtt://&lt;/code> is used as the default.&lt;/p></description></item><item><title>Client.reconnect()</title><link>https://grafana.com/docs/k6/v2.3.x/javascript-api/k6-x-mqtt/client/reconnect/</link><pubDate>Mon, 21 Sep 2026 15:16:28 +0000</pubDate><guid>https://grafana.com/docs/k6/v2.3.x/javascript-api/k6-x-mqtt/client/reconnect/</guid><content><![CDATA[&lt;h1 id=&#34;clientreconnect&#34;&gt;Client.reconnect()&lt;/h1&gt;
&lt;p&gt;Attempts to reconnect to the MQTT broker using the same connection parameters as the last successful connection.&lt;/p&gt;
&lt;h2 id=&#34;signature&#34;&gt;Signature&lt;/h2&gt;
&lt;!-- md-k6:skipall --&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;JavaScript&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-javascript&#34;&gt;client.reconnect()&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
]]></content><description>&lt;h1 id="clientreconnect">Client.reconnect()&lt;/h1>
&lt;p>Attempts to reconnect to the MQTT broker using the same connection parameters as the last successful connection.&lt;/p>
&lt;h2 id="signature">Signature&lt;/h2>
&lt;!-- md-k6:skipall -->
&lt;div class="code-snippet ">&lt;div class="lang-toolbar">
&lt;span class="lang-toolbar__item lang-toolbar__item-active">JavaScript&lt;/span>
&lt;span class="code-clipboard">
&lt;button x-data="app_code_snippet()" x-init="init()" @click="copy()">
&lt;img class="code-clipboard__icon" src="/media/images/icons/icon-copy-small-2.svg" alt="Copy code to clipboard" width="14" height="13">
&lt;span>Copy&lt;/span>
&lt;/button>
&lt;/span>
&lt;div class="lang-toolbar__border">&lt;/div>
&lt;/div>&lt;div class="code-snippet ">
&lt;pre data-expanded="false">&lt;code class="language-javascript">client.reconnect()&lt;/code>&lt;/pre>
&lt;/div>
&lt;/div></description></item><item><title>Client.subscribe( topic, [options] )</title><link>https://grafana.com/docs/k6/v2.3.x/javascript-api/k6-x-mqtt/client/subscribe/</link><pubDate>Mon, 21 Sep 2026 15:16:28 +0000</pubDate><guid>https://grafana.com/docs/k6/v2.3.x/javascript-api/k6-x-mqtt/client/subscribe/</guid><content><![CDATA[&lt;h1 id=&#34;clientsubscribe&#34;&gt;Client.subscribe()&lt;/h1&gt;
&lt;p&gt;Subscribe to topics synchronously.&lt;/p&gt;
&lt;h2 id=&#34;signature&#34;&gt;Signature&lt;/h2&gt;
&lt;!-- md-k6:skipall --&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;JavaScript&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-javascript&#34;&gt;client.subscribe(topic, options)&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h2 id=&#34;parameters&#34;&gt;Parameters&lt;/h2&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th style=&#34;text-align: left&#34;&gt;Parameter&lt;/th&gt;
              &lt;th style=&#34;text-align: left&#34;&gt;Type&lt;/th&gt;
              &lt;th style=&#34;text-align: left&#34;&gt;Description&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;topic&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;string | string[]&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;Topic or array of topics to subscribe to&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;options&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;object&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;Optional subscription configuration&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;options.qos&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;number&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;Quality of Service level (0, 1, or 2). Default: 0&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;options.tags&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;object&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;Custom tags for metrics (key-value pairs)&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;]]></content><description>&lt;h1 id="clientsubscribe">Client.subscribe()&lt;/h1>
&lt;p>Subscribe to topics synchronously.&lt;/p>
&lt;h2 id="signature">Signature&lt;/h2>
&lt;!-- md-k6:skipall -->
&lt;div class="code-snippet ">&lt;div class="lang-toolbar">
&lt;span class="lang-toolbar__item lang-toolbar__item-active">JavaScript&lt;/span>
&lt;span class="code-clipboard">
&lt;button x-data="app_code_snippet()" x-init="init()" @click="copy()">
&lt;img class="code-clipboard__icon" src="/media/images/icons/icon-copy-small-2.svg" alt="Copy code to clipboard" width="14" height="13">
&lt;span>Copy&lt;/span>
&lt;/button>
&lt;/span>
&lt;div class="lang-toolbar__border">&lt;/div>
&lt;/div>&lt;div class="code-snippet ">
&lt;pre data-expanded="false">&lt;code class="language-javascript">client.subscribe(topic, options)&lt;/code>&lt;/pre>
&lt;/div>
&lt;/div>
&lt;h2 id="parameters">Parameters&lt;/h2>
&lt;section class="expand-table-wrapper">&lt;div class="button-div">
&lt;button class="expand-table-btn">Expand table&lt;/button>
&lt;/div>&lt;div class="responsive-table-wrapper">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th style="text-align: left">Parameter&lt;/th>
&lt;th style="text-align: left">Type&lt;/th>
&lt;th style="text-align: left">Description&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td style="text-align: left">topic&lt;/td>
&lt;td style="text-align: left">string | string[]&lt;/td>
&lt;td style="text-align: left">Topic or array of topics to subscribe to&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align: left">options&lt;/td>
&lt;td style="text-align: left">object&lt;/td>
&lt;td style="text-align: left">Optional subscription configuration&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align: left">options.qos&lt;/td>
&lt;td style="text-align: left">number&lt;/td>
&lt;td style="text-align: left">Quality of Service level (0, 1, or 2). Default: 0&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align: left">options.tags&lt;/td>
&lt;td style="text-align: left">object&lt;/td>
&lt;td style="text-align: left">Custom tags for metrics (key-value pairs)&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;/section></description></item><item><title>Client.subscribeAsync( topic, [options] )</title><link>https://grafana.com/docs/k6/v2.3.x/javascript-api/k6-x-mqtt/client/subscribe-async/</link><pubDate>Mon, 21 Sep 2026 15:16:28 +0000</pubDate><guid>https://grafana.com/docs/k6/v2.3.x/javascript-api/k6-x-mqtt/client/subscribe-async/</guid><content><![CDATA[&lt;h1 id=&#34;clientsubscribeasync&#34;&gt;Client.subscribeAsync()&lt;/h1&gt;
&lt;p&gt;Subscribe to topics asynchronously. Returns a promise that resolves when the subscription is complete.&lt;/p&gt;
&lt;h2 id=&#34;signature&#34;&gt;Signature&lt;/h2&gt;
&lt;!-- md-k6:skipall --&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;JavaScript&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-javascript&#34;&gt;await client.subscribeAsync(topic, options)&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h2 id=&#34;parameters&#34;&gt;Parameters&lt;/h2&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th style=&#34;text-align: left&#34;&gt;Parameter&lt;/th&gt;
              &lt;th style=&#34;text-align: left&#34;&gt;Type&lt;/th&gt;
              &lt;th style=&#34;text-align: left&#34;&gt;Description&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;topic&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;string | string[]&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;Topic or array of topics to subscribe to&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;options&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;object&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;Optional subscription configuration&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;options.qos&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;number&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;Quality of Service level (0, 1, or 2). Default: 0&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;options.tags&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;object&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;Custom tags for metrics (key-value pairs)&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;h2 id=&#34;returns&#34;&gt;Returns&lt;/h2&gt;
&lt;p&gt;A promise that resolves when the subscription is successfully completed.&lt;/p&gt;
]]></content><description>&lt;h1 id="clientsubscribeasync">Client.subscribeAsync()&lt;/h1>
&lt;p>Subscribe to topics asynchronously. Returns a promise that resolves when the subscription is complete.&lt;/p>
&lt;h2 id="signature">Signature&lt;/h2>
&lt;!-- md-k6:skipall -->
&lt;div class="code-snippet ">&lt;div class="lang-toolbar">
&lt;span class="lang-toolbar__item lang-toolbar__item-active">JavaScript&lt;/span>
&lt;span class="code-clipboard">
&lt;button x-data="app_code_snippet()" x-init="init()" @click="copy()">
&lt;img class="code-clipboard__icon" src="/media/images/icons/icon-copy-small-2.svg" alt="Copy code to clipboard" width="14" height="13">
&lt;span>Copy&lt;/span>
&lt;/button>
&lt;/span>
&lt;div class="lang-toolbar__border">&lt;/div>
&lt;/div>&lt;div class="code-snippet ">
&lt;pre data-expanded="false">&lt;code class="language-javascript">await client.subscribeAsync(topic, options)&lt;/code>&lt;/pre>
&lt;/div>
&lt;/div>
&lt;h2 id="parameters">Parameters&lt;/h2>
&lt;section class="expand-table-wrapper">&lt;div class="button-div">
&lt;button class="expand-table-btn">Expand table&lt;/button>
&lt;/div>&lt;div class="responsive-table-wrapper">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th style="text-align: left">Parameter&lt;/th>
&lt;th style="text-align: left">Type&lt;/th>
&lt;th style="text-align: left">Description&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td style="text-align: left">topic&lt;/td>
&lt;td style="text-align: left">string | string[]&lt;/td>
&lt;td style="text-align: left">Topic or array of topics to subscribe to&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align: left">options&lt;/td>
&lt;td style="text-align: left">object&lt;/td>
&lt;td style="text-align: left">Optional subscription configuration&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align: left">options.qos&lt;/td>
&lt;td style="text-align: left">number&lt;/td>
&lt;td style="text-align: left">Quality of Service level (0, 1, or 2). Default: 0&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align: left">options.tags&lt;/td>
&lt;td style="text-align: left">object&lt;/td>
&lt;td style="text-align: left">Custom tags for metrics (key-value pairs)&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;/section>&lt;h2 id="returns">Returns&lt;/h2>
&lt;p>A promise that resolves when the subscription is successfully completed.&lt;/p></description></item><item><title>Client.unsubscribe( topics, [options] )</title><link>https://grafana.com/docs/k6/v2.3.x/javascript-api/k6-x-mqtt/client/unsubscribe/</link><pubDate>Mon, 21 Sep 2026 15:16:28 +0000</pubDate><guid>https://grafana.com/docs/k6/v2.3.x/javascript-api/k6-x-mqtt/client/unsubscribe/</guid><content><![CDATA[&lt;h1 id=&#34;clientunsubscribe&#34;&gt;Client.unsubscribe()&lt;/h1&gt;
&lt;p&gt;Unsubscribe from topics synchronously.&lt;/p&gt;
&lt;h2 id=&#34;signature&#34;&gt;Signature&lt;/h2&gt;
&lt;!-- md-k6:skipall --&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;JavaScript&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-javascript&#34;&gt;client.unsubscribe(topics, options)&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h2 id=&#34;parameters&#34;&gt;Parameters&lt;/h2&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th style=&#34;text-align: left&#34;&gt;Parameter&lt;/th&gt;
              &lt;th style=&#34;text-align: left&#34;&gt;Type&lt;/th&gt;
              &lt;th style=&#34;text-align: left&#34;&gt;Description&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;topics&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;string | string[]&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;Topic or array of topics to unsubscribe from&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;options&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;object&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;Optional unsubscribe configuration&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;options.tags&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;object&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;Custom tags for metrics (key-value pairs)&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;]]></content><description>&lt;h1 id="clientunsubscribe">Client.unsubscribe()&lt;/h1>
&lt;p>Unsubscribe from topics synchronously.&lt;/p>
&lt;h2 id="signature">Signature&lt;/h2>
&lt;!-- md-k6:skipall -->
&lt;div class="code-snippet ">&lt;div class="lang-toolbar">
&lt;span class="lang-toolbar__item lang-toolbar__item-active">JavaScript&lt;/span>
&lt;span class="code-clipboard">
&lt;button x-data="app_code_snippet()" x-init="init()" @click="copy()">
&lt;img class="code-clipboard__icon" src="/media/images/icons/icon-copy-small-2.svg" alt="Copy code to clipboard" width="14" height="13">
&lt;span>Copy&lt;/span>
&lt;/button>
&lt;/span>
&lt;div class="lang-toolbar__border">&lt;/div>
&lt;/div>&lt;div class="code-snippet ">
&lt;pre data-expanded="false">&lt;code class="language-javascript">client.unsubscribe(topics, options)&lt;/code>&lt;/pre>
&lt;/div>
&lt;/div>
&lt;h2 id="parameters">Parameters&lt;/h2>
&lt;section class="expand-table-wrapper">&lt;div class="button-div">
&lt;button class="expand-table-btn">Expand table&lt;/button>
&lt;/div>&lt;div class="responsive-table-wrapper">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th style="text-align: left">Parameter&lt;/th>
&lt;th style="text-align: left">Type&lt;/th>
&lt;th style="text-align: left">Description&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td style="text-align: left">topics&lt;/td>
&lt;td style="text-align: left">string | string[]&lt;/td>
&lt;td style="text-align: left">Topic or array of topics to unsubscribe from&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align: left">options&lt;/td>
&lt;td style="text-align: left">object&lt;/td>
&lt;td style="text-align: left">Optional unsubscribe configuration&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align: left">options.tags&lt;/td>
&lt;td style="text-align: left">object&lt;/td>
&lt;td style="text-align: left">Custom tags for metrics (key-value pairs)&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;/section></description></item><item><title>Client.unsubscribeAsync( topics, [options] )</title><link>https://grafana.com/docs/k6/v2.3.x/javascript-api/k6-x-mqtt/client/unsubscribe-async/</link><pubDate>Mon, 21 Sep 2026 15:16:28 +0000</pubDate><guid>https://grafana.com/docs/k6/v2.3.x/javascript-api/k6-x-mqtt/client/unsubscribe-async/</guid><content><![CDATA[&lt;h1 id=&#34;clientunsubscribeasync&#34;&gt;Client.unsubscribeAsync()&lt;/h1&gt;
&lt;p&gt;Unsubscribe from topics asynchronously.&lt;/p&gt;
&lt;h2 id=&#34;signature&#34;&gt;Signature&lt;/h2&gt;
&lt;!-- md-k6:skipall --&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;JavaScript&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-javascript&#34;&gt;await client.unsubscribeAsync(topics, options)&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h2 id=&#34;parameters&#34;&gt;Parameters&lt;/h2&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th style=&#34;text-align: left&#34;&gt;Parameter&lt;/th&gt;
              &lt;th style=&#34;text-align: left&#34;&gt;Type&lt;/th&gt;
              &lt;th style=&#34;text-align: left&#34;&gt;Description&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;topics&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;string | string[]&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;Topic or array of topics to unsubscribe from&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;options&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;object&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;Optional unsubscribe configuration&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;options.tags&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;object&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;Custom tags for metrics (key-value pairs)&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;h2 id=&#34;returns&#34;&gt;Returns&lt;/h2&gt;
&lt;p&gt;A promise that resolves when the unsubscription is complete.&lt;/p&gt;
]]></content><description>&lt;h1 id="clientunsubscribeasync">Client.unsubscribeAsync()&lt;/h1>
&lt;p>Unsubscribe from topics asynchronously.&lt;/p>
&lt;h2 id="signature">Signature&lt;/h2>
&lt;!-- md-k6:skipall -->
&lt;div class="code-snippet ">&lt;div class="lang-toolbar">
&lt;span class="lang-toolbar__item lang-toolbar__item-active">JavaScript&lt;/span>
&lt;span class="code-clipboard">
&lt;button x-data="app_code_snippet()" x-init="init()" @click="copy()">
&lt;img class="code-clipboard__icon" src="/media/images/icons/icon-copy-small-2.svg" alt="Copy code to clipboard" width="14" height="13">
&lt;span>Copy&lt;/span>
&lt;/button>
&lt;/span>
&lt;div class="lang-toolbar__border">&lt;/div>
&lt;/div>&lt;div class="code-snippet ">
&lt;pre data-expanded="false">&lt;code class="language-javascript">await client.unsubscribeAsync(topics, options)&lt;/code>&lt;/pre>
&lt;/div>
&lt;/div>
&lt;h2 id="parameters">Parameters&lt;/h2>
&lt;section class="expand-table-wrapper">&lt;div class="button-div">
&lt;button class="expand-table-btn">Expand table&lt;/button>
&lt;/div>&lt;div class="responsive-table-wrapper">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th style="text-align: left">Parameter&lt;/th>
&lt;th style="text-align: left">Type&lt;/th>
&lt;th style="text-align: left">Description&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td style="text-align: left">topics&lt;/td>
&lt;td style="text-align: left">string | string[]&lt;/td>
&lt;td style="text-align: left">Topic or array of topics to unsubscribe from&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align: left">options&lt;/td>
&lt;td style="text-align: left">object&lt;/td>
&lt;td style="text-align: left">Optional unsubscribe configuration&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align: left">options.tags&lt;/td>
&lt;td style="text-align: left">object&lt;/td>
&lt;td style="text-align: left">Custom tags for metrics (key-value pairs)&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;/section>&lt;h2 id="returns">Returns&lt;/h2>
&lt;p>A promise that resolves when the unsubscription is complete.&lt;/p></description></item><item><title>Client.publish( topic, payload, [options] )</title><link>https://grafana.com/docs/k6/v2.3.x/javascript-api/k6-x-mqtt/client/publish/</link><pubDate>Mon, 21 Sep 2026 15:16:28 +0000</pubDate><guid>https://grafana.com/docs/k6/v2.3.x/javascript-api/k6-x-mqtt/client/publish/</guid><content><![CDATA[&lt;h1 id=&#34;clientpublish&#34;&gt;Client.publish()&lt;/h1&gt;
&lt;p&gt;Publish a message synchronously.&lt;/p&gt;
&lt;h2 id=&#34;signature&#34;&gt;Signature&lt;/h2&gt;
&lt;!-- md-k6:skipall --&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;JavaScript&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-javascript&#34;&gt;client.publish(topic, payload, options)&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h2 id=&#34;parameters&#34;&gt;Parameters&lt;/h2&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th style=&#34;text-align: left&#34;&gt;Parameter&lt;/th&gt;
              &lt;th style=&#34;text-align: left&#34;&gt;Type&lt;/th&gt;
              &lt;th style=&#34;text-align: left&#34;&gt;Description&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;topic&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;string&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;Topic to publish to&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;payload&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;string | ArrayBuffer&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;Message payload (string or binary data)&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;options&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;object&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;Optional publish configuration&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;options.qos&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;number&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;Quality of Service level (0, 1, or 2). Default: 0&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;options.retain&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;boolean&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;Whether the message should be retained by the broker. Default: false&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;options.tags&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;object&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;Custom tags for metrics (key-value pairs)&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;]]></content><description>&lt;h1 id="clientpublish">Client.publish()&lt;/h1>
&lt;p>Publish a message synchronously.&lt;/p>
&lt;h2 id="signature">Signature&lt;/h2>
&lt;!-- md-k6:skipall -->
&lt;div class="code-snippet ">&lt;div class="lang-toolbar">
&lt;span class="lang-toolbar__item lang-toolbar__item-active">JavaScript&lt;/span>
&lt;span class="code-clipboard">
&lt;button x-data="app_code_snippet()" x-init="init()" @click="copy()">
&lt;img class="code-clipboard__icon" src="/media/images/icons/icon-copy-small-2.svg" alt="Copy code to clipboard" width="14" height="13">
&lt;span>Copy&lt;/span>
&lt;/button>
&lt;/span>
&lt;div class="lang-toolbar__border">&lt;/div>
&lt;/div>&lt;div class="code-snippet ">
&lt;pre data-expanded="false">&lt;code class="language-javascript">client.publish(topic, payload, options)&lt;/code>&lt;/pre>
&lt;/div>
&lt;/div>
&lt;h2 id="parameters">Parameters&lt;/h2>
&lt;section class="expand-table-wrapper">&lt;div class="button-div">
&lt;button class="expand-table-btn">Expand table&lt;/button>
&lt;/div>&lt;div class="responsive-table-wrapper">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th style="text-align: left">Parameter&lt;/th>
&lt;th style="text-align: left">Type&lt;/th>
&lt;th style="text-align: left">Description&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td style="text-align: left">topic&lt;/td>
&lt;td style="text-align: left">string&lt;/td>
&lt;td style="text-align: left">Topic to publish to&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align: left">payload&lt;/td>
&lt;td style="text-align: left">string | ArrayBuffer&lt;/td>
&lt;td style="text-align: left">Message payload (string or binary data)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align: left">options&lt;/td>
&lt;td style="text-align: left">object&lt;/td>
&lt;td style="text-align: left">Optional publish configuration&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align: left">options.qos&lt;/td>
&lt;td style="text-align: left">number&lt;/td>
&lt;td style="text-align: left">Quality of Service level (0, 1, or 2). Default: 0&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align: left">options.retain&lt;/td>
&lt;td style="text-align: left">boolean&lt;/td>
&lt;td style="text-align: left">Whether the message should be retained by the broker. Default: false&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align: left">options.tags&lt;/td>
&lt;td style="text-align: left">object&lt;/td>
&lt;td style="text-align: left">Custom tags for metrics (key-value pairs)&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;/section></description></item><item><title>Client.publishAsync( topic, payload, [options] )</title><link>https://grafana.com/docs/k6/v2.3.x/javascript-api/k6-x-mqtt/client/publish-async/</link><pubDate>Mon, 21 Sep 2026 15:16:28 +0000</pubDate><guid>https://grafana.com/docs/k6/v2.3.x/javascript-api/k6-x-mqtt/client/publish-async/</guid><content><![CDATA[&lt;h1 id=&#34;clientpublishasync&#34;&gt;Client.publishAsync()&lt;/h1&gt;
&lt;p&gt;Publish a message asynchronously. Returns a promise that resolves when the message is published.&lt;/p&gt;
&lt;h2 id=&#34;signature&#34;&gt;Signature&lt;/h2&gt;
&lt;!-- md-k6:skipall --&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;JavaScript&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-javascript&#34;&gt;await client.publishAsync(topic, payload, options)&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h2 id=&#34;parameters&#34;&gt;Parameters&lt;/h2&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th style=&#34;text-align: left&#34;&gt;Parameter&lt;/th&gt;
              &lt;th style=&#34;text-align: left&#34;&gt;Type&lt;/th&gt;
              &lt;th style=&#34;text-align: left&#34;&gt;Description&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;topic&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;string&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;Topic to publish to&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;payload&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;string | ArrayBuffer&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;Message payload (string or binary data)&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;options&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;object&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;Optional publish configuration&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;options.qos&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;number&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;Quality of Service level (0, 1, or 2). Default: 0&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;options.retain&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;boolean&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;Whether the message should be retained by the broker. Default: false&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;options.tags&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;object&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;Custom tags for metrics (key-value pairs)&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;h2 id=&#34;returns&#34;&gt;Returns&lt;/h2&gt;
&lt;p&gt;A promise that resolves when the message is successfully published.&lt;/p&gt;
]]></content><description>&lt;h1 id="clientpublishasync">Client.publishAsync()&lt;/h1>
&lt;p>Publish a message asynchronously. Returns a promise that resolves when the message is published.&lt;/p>
&lt;h2 id="signature">Signature&lt;/h2>
&lt;!-- md-k6:skipall -->
&lt;div class="code-snippet ">&lt;div class="lang-toolbar">
&lt;span class="lang-toolbar__item lang-toolbar__item-active">JavaScript&lt;/span>
&lt;span class="code-clipboard">
&lt;button x-data="app_code_snippet()" x-init="init()" @click="copy()">
&lt;img class="code-clipboard__icon" src="/media/images/icons/icon-copy-small-2.svg" alt="Copy code to clipboard" width="14" height="13">
&lt;span>Copy&lt;/span>
&lt;/button>
&lt;/span>
&lt;div class="lang-toolbar__border">&lt;/div>
&lt;/div>&lt;div class="code-snippet ">
&lt;pre data-expanded="false">&lt;code class="language-javascript">await client.publishAsync(topic, payload, options)&lt;/code>&lt;/pre>
&lt;/div>
&lt;/div>
&lt;h2 id="parameters">Parameters&lt;/h2>
&lt;section class="expand-table-wrapper">&lt;div class="button-div">
&lt;button class="expand-table-btn">Expand table&lt;/button>
&lt;/div>&lt;div class="responsive-table-wrapper">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th style="text-align: left">Parameter&lt;/th>
&lt;th style="text-align: left">Type&lt;/th>
&lt;th style="text-align: left">Description&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td style="text-align: left">topic&lt;/td>
&lt;td style="text-align: left">string&lt;/td>
&lt;td style="text-align: left">Topic to publish to&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align: left">payload&lt;/td>
&lt;td style="text-align: left">string | ArrayBuffer&lt;/td>
&lt;td style="text-align: left">Message payload (string or binary data)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align: left">options&lt;/td>
&lt;td style="text-align: left">object&lt;/td>
&lt;td style="text-align: left">Optional publish configuration&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align: left">options.qos&lt;/td>
&lt;td style="text-align: left">number&lt;/td>
&lt;td style="text-align: left">Quality of Service level (0, 1, or 2). Default: 0&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align: left">options.retain&lt;/td>
&lt;td style="text-align: left">boolean&lt;/td>
&lt;td style="text-align: left">Whether the message should be retained by the broker. Default: false&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align: left">options.tags&lt;/td>
&lt;td style="text-align: left">object&lt;/td>
&lt;td style="text-align: left">Custom tags for metrics (key-value pairs)&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;/section>&lt;h2 id="returns">Returns&lt;/h2>
&lt;p>A promise that resolves when the message is successfully published.&lt;/p></description></item><item><title>Client.on( event, listener )</title><link>https://grafana.com/docs/k6/v2.3.x/javascript-api/k6-x-mqtt/client/on/</link><pubDate>Mon, 21 Sep 2026 15:16:28 +0000</pubDate><guid>https://grafana.com/docs/k6/v2.3.x/javascript-api/k6-x-mqtt/client/on/</guid><content><![CDATA[&lt;h1 id=&#34;clienton&#34;&gt;Client.on()&lt;/h1&gt;
&lt;p&gt;The &lt;code&gt;on()&lt;/code&gt; method registers event handlers for various MQTT client lifecycle and message events. All event handlers execute in the context of the k6 VU event loop.&lt;/p&gt;
&lt;h2 id=&#34;signature&#34;&gt;Signature&lt;/h2&gt;
&lt;!-- md-k6:skipall --&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;JavaScript&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-javascript&#34;&gt;client.on(event, listener)&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h3 id=&#34;parameters&#34;&gt;Parameters&lt;/h3&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th style=&#34;text-align: left&#34;&gt;Parameter&lt;/th&gt;
              &lt;th style=&#34;text-align: left&#34;&gt;Type&lt;/th&gt;
              &lt;th style=&#34;text-align: left&#34;&gt;Description&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;event&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;string&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;Event name (&lt;code&gt;connect&lt;/code&gt;, &lt;code&gt;message&lt;/code&gt;, &lt;code&gt;end&lt;/code&gt;, &lt;code&gt;reconnect&lt;/code&gt;, &lt;code&gt;error&lt;/code&gt;)&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;listener&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;function&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;Callback function to handle the event&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;h2 id=&#34;events&#34;&gt;Events&lt;/h2&gt;
&lt;h3 id=&#34;connect&#34;&gt;connect&lt;/h3&gt;
&lt;p&gt;Triggered when the client successfully connects to the broker.&lt;/p&gt;
&lt;h4 id=&#34;signature-1&#34;&gt;Signature&lt;/h4&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;JavaScript&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-javascript&#34;&gt;client.on(&amp;#34;connect&amp;#34;, () =&amp;gt; {
  // Connection established
})&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h3 id=&#34;message&#34;&gt;message&lt;/h3&gt;
&lt;p&gt;Triggered when a message is received on a subscribed topic.&lt;/p&gt;
&lt;h4 id=&#34;signature-2&#34;&gt;Signature&lt;/h4&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;JavaScript&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-javascript&#34;&gt;client.on(&amp;#34;message&amp;#34;, (topic, payload) =&amp;gt; {
  // Handle received message
})&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h4 id=&#34;parameters-1&#34;&gt;Parameters&lt;/h4&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th style=&#34;text-align: left&#34;&gt;Parameter&lt;/th&gt;
              &lt;th style=&#34;text-align: left&#34;&gt;Type&lt;/th&gt;
              &lt;th style=&#34;text-align: left&#34;&gt;Description&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;topic&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;string&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;The topic the message was received on&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;payload&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;ArrayBuffer&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;The message payload as binary data&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;h3 id=&#34;end&#34;&gt;end&lt;/h3&gt;
&lt;p&gt;Triggered when the client disconnects from the broker.&lt;/p&gt;
&lt;h4 id=&#34;signature-3&#34;&gt;Signature&lt;/h4&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;JavaScript&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-javascript&#34;&gt;client.on(&amp;#34;end&amp;#34;, () =&amp;gt; {
  // Connection closed
})&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h3 id=&#34;reconnect&#34;&gt;reconnect&lt;/h3&gt;
&lt;p&gt;Triggered when the client attempts to reconnect to the broker.&lt;/p&gt;
&lt;h4 id=&#34;signature-4&#34;&gt;Signature&lt;/h4&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;JavaScript&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-javascript&#34;&gt;client.on(&amp;#34;reconnect&amp;#34;, () =&amp;gt; {
  // Reconnection attempt
})&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h3 id=&#34;error&#34;&gt;error&lt;/h3&gt;
&lt;p&gt;Triggered when an error occurs during any MQTT operation.&lt;/p&gt;
&lt;h4 id=&#34;signature-5&#34;&gt;Signature&lt;/h4&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;JavaScript&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-javascript&#34;&gt;client.on(&amp;#34;error&amp;#34;, (error) =&amp;gt; {
  // Handle error
})&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h4 id=&#34;parameters-2&#34;&gt;Parameters&lt;/h4&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th style=&#34;text-align: left&#34;&gt;Parameter&lt;/th&gt;
              &lt;th style=&#34;text-align: left&#34;&gt;Type&lt;/th&gt;
              &lt;th style=&#34;text-align: left&#34;&gt;Description&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;error&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;object&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;Error object&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;error.name&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;string&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;Always &amp;ldquo;MQTTError&amp;rdquo;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;error.message&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;string&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;Error description&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;error.method&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;string&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;The method where the error occurred&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;]]></content><description>&lt;h1 id="clienton">Client.on()&lt;/h1>
&lt;p>The &lt;code>on()&lt;/code> method registers event handlers for various MQTT client lifecycle and message events. All event handlers execute in the context of the k6 VU event loop.&lt;/p></description></item><item><title>Client.end( [options] )</title><link>https://grafana.com/docs/k6/v2.3.x/javascript-api/k6-x-mqtt/client/end/</link><pubDate>Mon, 21 Sep 2026 15:16:28 +0000</pubDate><guid>https://grafana.com/docs/k6/v2.3.x/javascript-api/k6-x-mqtt/client/end/</guid><content><![CDATA[&lt;h1 id=&#34;clientend&#34;&gt;Client.end()&lt;/h1&gt;
&lt;p&gt;Disconnect from the broker synchronously. When the disconnection is complete, the &lt;code&gt;end&lt;/code&gt; event is triggered.&lt;/p&gt;
&lt;h2 id=&#34;signature&#34;&gt;Signature&lt;/h2&gt;
&lt;!-- md-k6:skipall --&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;JavaScript&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-javascript&#34;&gt;client.end(options)&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h2 id=&#34;parameters&#34;&gt;Parameters&lt;/h2&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th style=&#34;text-align: left&#34;&gt;Parameter&lt;/th&gt;
              &lt;th style=&#34;text-align: left&#34;&gt;Type&lt;/th&gt;
              &lt;th style=&#34;text-align: left&#34;&gt;Description&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;options&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;object&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;Optional disconnect configuration&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;options.tags&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;object&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;Custom tags for metrics (key-value pairs)&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;]]></content><description>&lt;h1 id="clientend">Client.end()&lt;/h1>
&lt;p>Disconnect from the broker synchronously. When the disconnection is complete, the &lt;code>end&lt;/code> event is triggered.&lt;/p>
&lt;h2 id="signature">Signature&lt;/h2>
&lt;!-- md-k6:skipall -->
&lt;div class="code-snippet ">&lt;div class="lang-toolbar">
&lt;span class="lang-toolbar__item lang-toolbar__item-active">JavaScript&lt;/span>
&lt;span class="code-clipboard">
&lt;button x-data="app_code_snippet()" x-init="init()" @click="copy()">
&lt;img class="code-clipboard__icon" src="/media/images/icons/icon-copy-small-2.svg" alt="Copy code to clipboard" width="14" height="13">
&lt;span>Copy&lt;/span>
&lt;/button>
&lt;/span>
&lt;div class="lang-toolbar__border">&lt;/div>
&lt;/div>&lt;div class="code-snippet ">
&lt;pre data-expanded="false">&lt;code class="language-javascript">client.end(options)&lt;/code>&lt;/pre>
&lt;/div>
&lt;/div>
&lt;h2 id="parameters">Parameters&lt;/h2>
&lt;section class="expand-table-wrapper">&lt;div class="button-div">
&lt;button class="expand-table-btn">Expand table&lt;/button>
&lt;/div>&lt;div class="responsive-table-wrapper">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th style="text-align: left">Parameter&lt;/th>
&lt;th style="text-align: left">Type&lt;/th>
&lt;th style="text-align: left">Description&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td style="text-align: left">options&lt;/td>
&lt;td style="text-align: left">object&lt;/td>
&lt;td style="text-align: left">Optional disconnect configuration&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align: left">options.tags&lt;/td>
&lt;td style="text-align: left">object&lt;/td>
&lt;td style="text-align: left">Custom tags for metrics (key-value pairs)&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;/section></description></item><item><title>Client.endAsync( [options] )</title><link>https://grafana.com/docs/k6/v2.3.x/javascript-api/k6-x-mqtt/client/end-async/</link><pubDate>Mon, 21 Sep 2026 15:16:28 +0000</pubDate><guid>https://grafana.com/docs/k6/v2.3.x/javascript-api/k6-x-mqtt/client/end-async/</guid><content><![CDATA[&lt;h1 id=&#34;clientendasync&#34;&gt;Client.endAsync()&lt;/h1&gt;
&lt;p&gt;Disconnect from the broker asynchronously. Returns a promise that resolves when the disconnection is complete.&lt;/p&gt;
&lt;h2 id=&#34;signature&#34;&gt;Signature&lt;/h2&gt;
&lt;!-- md-k6:skipall --&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;JavaScript&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-javascript&#34;&gt;await client.endAsync(options)&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h2 id=&#34;parameters&#34;&gt;Parameters&lt;/h2&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th style=&#34;text-align: left&#34;&gt;Parameter&lt;/th&gt;
              &lt;th style=&#34;text-align: left&#34;&gt;Type&lt;/th&gt;
              &lt;th style=&#34;text-align: left&#34;&gt;Description&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;options&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;object&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;Optional disconnect configuration&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;options.tags&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;object&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;Custom tags for metrics (key-value pairs)&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;h2 id=&#34;returns&#34;&gt;Returns&lt;/h2&gt;
&lt;p&gt;A promise that resolves when the client is successfully disconnected.&lt;/p&gt;
]]></content><description>&lt;h1 id="clientendasync">Client.endAsync()&lt;/h1>
&lt;p>Disconnect from the broker asynchronously. Returns a promise that resolves when the disconnection is complete.&lt;/p>
&lt;h2 id="signature">Signature&lt;/h2>
&lt;!-- md-k6:skipall -->
&lt;div class="code-snippet ">&lt;div class="lang-toolbar">
&lt;span class="lang-toolbar__item lang-toolbar__item-active">JavaScript&lt;/span>
&lt;span class="code-clipboard">
&lt;button x-data="app_code_snippet()" x-init="init()" @click="copy()">
&lt;img class="code-clipboard__icon" src="/media/images/icons/icon-copy-small-2.svg" alt="Copy code to clipboard" width="14" height="13">
&lt;span>Copy&lt;/span>
&lt;/button>
&lt;/span>
&lt;div class="lang-toolbar__border">&lt;/div>
&lt;/div>&lt;div class="code-snippet ">
&lt;pre data-expanded="false">&lt;code class="language-javascript">await client.endAsync(options)&lt;/code>&lt;/pre>
&lt;/div>
&lt;/div>
&lt;h2 id="parameters">Parameters&lt;/h2>
&lt;section class="expand-table-wrapper">&lt;div class="button-div">
&lt;button class="expand-table-btn">Expand table&lt;/button>
&lt;/div>&lt;div class="responsive-table-wrapper">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th style="text-align: left">Parameter&lt;/th>
&lt;th style="text-align: left">Type&lt;/th>
&lt;th style="text-align: left">Description&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td style="text-align: left">options&lt;/td>
&lt;td style="text-align: left">object&lt;/td>
&lt;td style="text-align: left">Optional disconnect configuration&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align: left">options.tags&lt;/td>
&lt;td style="text-align: left">object&lt;/td>
&lt;td style="text-align: left">Custom tags for metrics (key-value pairs)&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;/section>&lt;h2 id="returns">Returns&lt;/h2>
&lt;p>A promise that resolves when the client is successfully disconnected.&lt;/p></description></item></channel></rss>