国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

ActiveMQ使用(二):在JavaScript中使用mqtt.js

這篇具有很好參考價(jià)值的文章主要介紹了ActiveMQ使用(二):在JavaScript中使用mqtt.js。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

ActiveMQ使用(二):在JavaScript中使用mqtt.js

1. 環(huán)境準(zhǔn)備

  1. jQuery-1.10
    下載地址:https://www.jsdelivr.com/package/npm/jquery-1.10.2?tab=files
  2. mqtt.js 4.3.7:
    下載地址:https://www.jsdelivr.com/package/npm/mqtt
    ActiveMQ使用(二):在JavaScript中使用mqtt.js

2. 相關(guān)代碼

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <div class="connect-input-box">
        <label for="host">host:</label>
        <input type="text" name="host" placeholder="input host" value="127.0.0.1"><br>
        <label for="port">port:</label>
        <input type="text" name="port" placeholder="input port" value="61614"><br>
        <label for="clientId">client id:</label>
        <input type="text" name="clientId" placeholder="input client id"><br>
        <label for="userId">user id:</label>
        <input type="text" name="userId" placeholder="input user id" value="user"><br>
        <label for="password">password:</label>
        <input type="text" name="password" placeholder="input password" value="pass"><br>
        <label for="destination">destination:</label>
        <input type="text" name="destination" placeholder="input destination" value="world"><br>
        <button id="connect" type="submit">connect</button>
        <button id="disconnect" type="submit">disconnect</button>
    </div>
    <div class="log-box">
        <p id="log-show"></p>
    </div>
    <div class="send-message-box">
        <label for="topic">topic:</label>
        <input type="text" name="topic"><br>
        <label for="queue">queue:</label>
        <input type="text" name="queue"><br>
        <input type="text" name="message"><br>
        <button id="send">send</button>
    </div>
    <div class="subscribe-box">
        <label for="subscribe-topic">subscribe-topic:</label>
        <input type="text" name="subscribe-topic">
        <button id="subscribe">subscribe</button>
    </div>
    <div class="unsubscribe-box">
        <label for="unsubscribe-topic"></label>
        <input type="text" name="unsubscribe-topic">
        <button id="unsubscribe">unsubscribe</button>
    </div>

    <script src="plugins/jquery-1.10.1.js"></script>
    <script src="plugins/mqtt.min.js"></script>
    <script type="module">

        $(() => {
            console.log('mqtt: ', mqtt)
            $('input[name="clientId"]').val("example-" + Math.floor(Math.random() * 10000))

            if (!window.WebSocket) {
                console.log('不支持WebSocket')
            } else {
                
            }
        })

        var client, destination

        $('#connect').click(() => {
            var host = $('input[name="host"]').val()
            var port = $('input[name="port"]').val()
            var clientId = $('input[name="clientId"]').val()
            var user = $('input[name="userId"]').val()
            var password = $('input[name="password"]').val()

            destination = $('input[name="destination"]').val()
            console.log(host)
            console.log(mqtt)

            // 創(chuàng)建一個(gè)client 實(shí)例
            let url = 'ws://' + host + ':' + port + '/mqtt'
            client = mqtt.connect(url)
            console.log(client)
            client.on('connect', onConnect)

            // 斷開連接以后觸發(fā)
            client.on('close', () => {
                console.log('disconnected')
            })

            // 收到斷開連接的報(bào)文后觸發(fā)
            client.on('disconnect', packet => {
                console.log(packet)
            })

            // 客戶端下線時(shí)觸發(fā)
            client.on('offline', () => {
                console.log('offline')
            })

            // 接收消息
            client.on('message', (topic, payload, packet) => {
                // message is buffer
                console.log(`Topic: ${topic}, Message: ${payload.toString()}, QoS: ${packet.qos}`)
            })
        })

        // 當(dāng)client連接時(shí)調(diào)用
        function onConnect() {
            // 訂閱主題
            client.subscribe('world', err => {
                if (!err) {
                    // 發(fā)布消息
                    client.publish('world', 'hello mqtt')
                }
            })
        }

        // 斷開連接
        $('#disconnect').click(() => {
            console.log('disconnect');
            client.end()
        })

        // 發(fā)送消息
        $('#send').click(() => {
            console.log('send')
            let topic = $('input[name="topic"]').val()
            let payload = $('input[name="message"]').val()
            let options = {
                qos: 0,
                retain: false,
                properties: {
                    payloadFormatIndicator: true
                }
            }
            client.publish(topic.toString(), payload, options, (err) => {
                if (err) {
                    console.log(err)
                } else {
                    console.log('published')
                }
            })
        })

        // 訂閱主題
        $('#subscribe').click(() => {
            console.log('subscribe')
            let topic = $('input[name="subscribe-topic"]').val()
            client.subscribe(topic, {qos: 0}, (error, granted) => {
                if (error) {
                    console.log(error)
                } else {
                    console.log(`${granted[0].topic} was subscribed`)
                }
            })
        })

        // 取消訂閱主題
        $('#unsubscribe').click(() => {
            console.log('unsubscribe')
            let topic = $('input[name="unsubscribe-topic"]').val()
            client.unsubscribe(topic, err => {
                if (err) {
                    console.log(err)
                } else {
                    console.log('unscribed')
                }
            })
        })
    </script>
</body>
</html>

3. 結(jié)果展示

3.1 連接

ActiveMQ使用(二):在JavaScript中使用mqtt.js

3.2 訂閱

ActiveMQ使用(二):在JavaScript中使用mqtt.js

3.3 發(fā)送消息

ActiveMQ使用(二):在JavaScript中使用mqtt.js

3.4 取消訂閱

ActiveMQ使用(二):在JavaScript中使用mqtt.js

3.5 斷開連接

ActiveMQ使用(二):在JavaScript中使用mqtt.js

4. 相關(guān)參考

JS HTML Web端使用MQTT通訊測(cè)試

MQTT.js 入門教程

https://www.jsdelivr.com/package/npm/mqtt

5. 注意

SprintBoot項(xiàng)目中集成ActiveMQ后,接收到的數(shù)據(jù)為字節(jié)數(shù)組
一種解決方式為:文章來源地址http://www.zghlxwxcb.cn/news/detail-413671.html

@JmsListener(destination = "test_producer", containerFactory = "topicListenerContainer")
    public void receiveTestProducer(Message message) throws JMSException {
        String msg = StringUtils.activeMQMessageParse(message);
        System.out.println("收到測(cè)試生產(chǎn)者的消息: " + msg);
    }


public class StringUtils {

    /**
     * 將字符串進(jìn)行分割并獲得字節(jié)數(shù)組
     * @param str 待處理字符串
     * @param split 分割字符串
     * @return 字節(jié)數(shù)組
     */
    public static byte[] stringToBytes(String str, String split) {
        String[] strArr = str.split(split);
        byte[] byteArr = new byte[strArr.length];
        for (int i = 0; i < strArr.length; i++) {
            byteArr[i] = (byte) Integer.parseInt(strArr[i]);
        }
        return byteArr;
    }

    /**
     * 根據(jù)字節(jié)數(shù)組獲取指定字符集的字符串
     * @param byteArr 字節(jié)數(shù)組
     * @param charset 編碼字符集
     * @return 處理后的字符串
     */
    public static String bytesToString(byte[] byteArr, Charset charset) {
        return new String(byteArr, charset);
    }

    /**
     * 將字符串根據(jù)分隔符轉(zhuǎn)成字節(jié)數(shù)組,然后轉(zhuǎn)成指定字符集的字符串
     * @param str 待處理字符串
     * @param split 分割字符串
     * @param charset 指定字符集
     * @return 處理后的字符串
     */
    public static String stringToString(String str, String split, Charset charset) {
        return bytesToString(stringToBytes(str, split), charset);
    }

    /**
     * 將ActiveMQ接收到的消息轉(zhuǎn)換為UTF-8字符串
     * @param message
     * @return
     */
    public static String activeMQMessageParse(Message message) {
        String str = null;
        if (message instanceof ActiveMQTextMessage) {
            ActiveMQTextMessage textMessage = (ActiveMQTextMessage) message;
            try {
                str = textMessage.getText().toString();
            } catch (JMSException e) {
                e.printStackTrace();
            }
//            System.out.println("text : " + textMessage.getText());
        } else if (message instanceof ActiveMQBytesMessage) {
            ActiveMQBytesMessage bytesMessage = (ActiveMQBytesMessage) message;
            byte[] byteArr = new byte[0];
            try {
                byteArr = new byte[(int) bytesMessage.getBodyLength()];
                int flag = bytesMessage.readBytes(byteArr);
                str = bytesToString(byteArr, StandardCharsets.UTF_8);
//                System.out.println("bytes : " + flag + " : " + str);
            } catch (JMSException e) {
                e.printStackTrace();
            }
        }
        return str;
    }
}

到了這里,關(guān)于ActiveMQ使用(二):在JavaScript中使用mqtt.js的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【JavaScript】案例1:使用JS完成注冊(cè)頁面校驗(yàn)

    【JavaScript】案例1:使用JS完成注冊(cè)頁面校驗(yàn)

    ??這里是【JavaScript】,關(guān)注我學(xué)習(xí)前端不迷路 ??如果對(duì)你有幫助,給博主一個(gè)免費(fèi)的點(diǎn)贊以示鼓勵(lì) 歡迎各位??點(diǎn)贊??評(píng)論收藏?? 【JavaScript】 目前主要更新JavaScript,一起學(xué)習(xí)一起進(jìn)步。 本期主要介紹案例1:使用JS完成注冊(cè)頁面校驗(yàn) 1.?需求說明 2.?知識(shí)講解-JavaScript(

    2024年02月06日
    瀏覽(31)
  • 使用javascript-obfuscator給js文件加密

    使用javascript-obfuscator給js文件加密

    注意:其中selfDefending設(shè)置為true時(shí)比較消耗系統(tǒng)性能,我設(shè)置為true時(shí)微信開發(fā)者工具直接白屏。 出現(xiàn)如下圖藍(lán)色字體即成功: 因?yàn)楸换煜拇a文件是不可讀的,所以需要自己備份原文件,以便后續(xù)維護(hù)修改。 ?? 原創(chuàng)不易,還希望各位大佬支持一下 textcolor{blue}{原創(chuàng)不易

    2024年02月07日
    瀏覽(25)
  • 【前端靈魂腳本語言JavaScript⑤】——JS中數(shù)組的使用

    【前端靈魂腳本語言JavaScript⑤】——JS中數(shù)組的使用

    ?? 作者: 阿偉 ?? 個(gè)人主頁: Flyme awei ?? 希望大家多多支持??一起進(jìn)步呀! ?? 文章對(duì)你有幫助??關(guān)注?點(diǎn)贊??收藏?? 第一種: var 數(shù)組名 = new Array(); 創(chuàng)建一個(gè)空數(shù)組 第二種: var arr2 = new Array(10); 創(chuàng)建一個(gè)定長為10的數(shù)組 第三種 var arr3 = new Array(a,b,c); 創(chuàng)建時(shí)直接指定元素值

    2023年04月08日
    瀏覽(111)
  • JavaScript 時(shí)間戳——如何在 JS 中使用 getTime() 生成時(shí)間戳

    在 JavaScript 中,時(shí)間戳通常與Unix 時(shí)間相關(guān)聯(lián)。并且有不同的方法來生成這樣的時(shí)間戳。 當(dāng)我們使用不同的 JavaScript 方法生成時(shí)間戳?xí)r,它們會(huì)返回自 1970 年 1 月 1 日 UTC(Unix 時(shí)間)以來經(jīng)過的毫秒數(shù)。 在本文中,您將學(xué)習(xí)如何使用以下方法在 JavaScript 中生成 Unix 時(shí)間戳:

    2024年02月12日
    瀏覽(19)
  • 使用JavaScript和XLSX.js將數(shù)據(jù)導(dǎo)出為Excel文件

    導(dǎo)出數(shù)據(jù)是Web應(yīng)用程序中常見的功能之一。在許多情況下,我們需要將數(shù)據(jù)導(dǎo)出為Excel文件,以便用戶可以在本地計(jì)算機(jī)上查看和編輯數(shù)據(jù)。在本篇博客中,我們將介紹如何使用JavaScript和XLSX.js將數(shù)據(jù)導(dǎo)出為Excel文件。 XLSX.js是一個(gè)JavaScript庫,它提供了一組API,可以將數(shù)據(jù)轉(zhuǎn)換

    2024年04月26日
    瀏覽(19)
  • 將 Jupyter Notebook 用于 JavaScript (使用 Node.js 或 Deno 環(huán)境)

    熟悉 Python 的讀者, 可能同樣對(duì) IPython 或 Jupyter 等項(xiàng)目 (如 Jupyter Notebook) 有所耳聞. 正如其名, IPython 項(xiàng)目讓 Python 這門語言變得 “interactive”; 如: 交互式的 Shell 程序, 對(duì)交互式數(shù)據(jù)可視化以及 GUI 工具集的支持等等 (具體可見 IPython 項(xiàng)目的網(wǎng)站). 比如在 Notebook 中, 用戶可以實(shí)現(xiàn)

    2024年02月07日
    瀏覽(19)
  • 【Bun1.0】使用 Bun.js 構(gòu)建快速、可靠和安全的 JavaScript 應(yīng)用程序

    【Bun1.0】使用 Bun.js 構(gòu)建快速、可靠和安全的 JavaScript 應(yīng)用程序

    Bun 是一個(gè)現(xiàn)代的JavaScript運(yùn)行環(huán)境,如Node, Deno。主要特性如下: 啟動(dòng)速度快。更高的性能。完整的工具(打包器、轉(zhuǎn)碼器、包管理)。 https://bun.sh 與傳統(tǒng)的 Node.js 不同,Bun.js 提供了一些新的特性和功能,例如: 更快的啟動(dòng)速度、更小的內(nèi)存占用、更好的異常處理機(jī)制等等。

    2024年02月09日
    瀏覽(56)
  • [JavaScript]使用opencv.js實(shí)現(xiàn)基于傅里葉變換的頻域水印(隱水印)

    [JavaScript]使用opencv.js實(shí)現(xiàn)基于傅里葉變換的頻域水印(隱水印)

    PS:查了多方資料,都沒有提到用 JavaScript 來實(shí)現(xiàn)頻域水印的教程,故經(jīng)過筆者的實(shí)踐,遂寫一篇教程來簡單介紹。 通過了解頻域水印的相關(guān)知識(shí),我理解了頻域水印就是先將圖片進(jìn)行傅里葉變換,得到頻域圖,然后將水印文字加到頻域圖中,在將頻域圖轉(zhuǎn)換回去得到加了頻

    2024年02月09日
    瀏覽(16)
  • JavaScript 中生成二維碼,你可以使用第三方庫,其中最流行和廣泛使用的是 QRCode.js。以下是使用 QRCode.js 生成二維碼的基本步驟:

    要在 JavaScript 中生成二維碼,你可以使用第三方庫,其中最流行和廣泛使用的是 QRCode.js。以下是使用 QRCode.js 生成二維碼的詳細(xì)的步驟如下: 步驟 1: 引入 QRCode.js 庫 首先,將 QRCode.js 庫引入到你的 HTML 文件中。你可以從 CDN 上獲取它: 步驟 2: 創(chuàng)建容器 在頁面中創(chuàng)建一個(gè)容器

    2024年01月18日
    瀏覽(109)
  • 如何使用ActiveMQ詳細(xì)講解

    ActiveMQ 是一款流行的消息中間件,支持多種通信協(xié)議和消息模式,包括點(diǎn)對(duì)點(diǎn)、發(fā)布/訂閱、事務(wù)處理等。下面是使用 ActiveMQ 的基本步驟: 1. 下載和安裝 ActiveMQ: 2. 啟動(dòng) ActiveMQ 服務(wù)器: 3. 訪問 ActiveMQ 的 Web 控制臺(tái): 4. 創(chuàng)建隊(duì)列或主題: 5. 發(fā)送消息: 6. 接收消息: 以上是使

    2024年01月17日
    瀏覽(23)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包