Rabbitmq+sockjs+stomp.js前端的使用

  1. rabbitmq-user1.html给队列user1发送消息,监听消费队列user2的消息
  2. rabbitmq-user2.html给队列user2发送消息,监听消费队列user1的消息

      这样rabbitmq-user1.html和rabbitmq-user1.html 实现了点对点的消息发送与接收

  • 前台html发送消息(rabbitmq-user1.html)
  • <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <script src="jquery-1.9.1.min.js"></script>
        <script src="sockjs.min.js"></script>
        <script src="stomp.js"></script>
        <script>
            // 初始化 ws 对象
            if (location.search == '?ws') {
                console.log('------------------');
                var ws = new WebSocket('ws://192.168.135.xxx:15674/ws');
            } else {
                console.log('******************');
                var ws = new SockJS('http://192.168.135.xxx:15674/stomp');
            }
    
            // 获得Stomp client对象
            var client = Stomp.over(ws);
            // SockJS does not support heart-beat: disable heart-beats
            //heart-beating也就是频率,incoming是接收频率,outgoing是发送频率
            client.heartbeat.outgoing = 0; //发送频率
            client.heartbeat.incoming = 0; //接收频率
            //关闭控制台调试数据:client.debug = null
            client.debug =function(str) {
                $("#debug").append(str + "<br/>");
            };;
    
            // 定义连接成功回调函数
            var on_connect = function(x) {
                //data.body是接收到的数据 (接收队列user2的数据)
                client.subscribe("/queue/user2", function(data) {
                    var msg = data.body;
                    console.log("收到数据:");
                    console.log(data);
                    $("#message").append(msg + "<br/>");
                    data.ack(); //如果后面带了参数 ack  就是指定要手动确认消息,没带就是自动确认
                },{ack:'client'});
            };
    
            // 定义错误时回调函数
            var on_error =  function() {
                console.log('error');
            };
            // 连接RabbitMQ
            client.connect('zcw', '123456', on_connect, on_error, '/');
            console.log(on_connect);
            $(function () {
                //发送消息到队列user1
                $('#send').click(function () {
                    var content=$('#sendContent').val();
                    console.log(content);
                    client.send("/queue/user1", {}, content);
                    $('#sendContent').val('');
                });
            });
        </script>
    </head>
    <body>
    <div id="debug" style="display: none;">
    
    </div>
    <!--显示接收到的消息-->
    <div id="message">
    
    </div>
    <div id="content">
        <!--发送消息的内容-->
        <textarea id="sendContent"></textarea>
    </div>
    <div id="success">
        <button id="send" >Send Mssages</button>
    </div>
    
    </body>
    </html>

     

  • 前台html消费消息(rabbitmq-user2.html)
  • <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <script src="jquery-1.9.1.min.js"></script>
        <script src="sockjs.min.js"></script>
        <script src="stomp.js"></script>
        <script>
            // 初始化 ws 对象
            if (location.search == '?ws') {
                console.log('------------------');
                var ws = new WebSocket('ws://192.168.135.xxx:15674/ws');
            } else {
                console.log('******************');
                var ws = new SockJS('http://192.168.135.xxx:15674/stomp');
            }
    
            // 获得Stomp client对象
            var client = Stomp.over(ws);
            // SockJS does not support heart-beat: disable heart-beats
            //heart-beating也就是频率,incoming是接收频率,outgoing是发送频率
            client.heartbeat.outgoing = 0; //发送频率
            client.heartbeat.incoming = 0; //接收频率
            //关闭控制台调试数据:client.debug = null
            client.debug =function(str) {
                $("#debug").append(str + "<br/>");
            };
    
            // 定义连接成功回调函数
            var on_connect = function(x) {
                //接收user1队列的数据
                client.subscribe("/queue/user1", function(data) {
                    var msg = data.body;
                    console.log("收到数据:");
                    console.log(data);
                    $("#message").append(msg + "<br/>");
                    data.ack(); //如果后面带了参数 ack  就是指定要手动确认消息,没带就是自动确认
                },{ack:'client'});
            };
            //client.send("/queue/default", {}, "I thought I was in a transaction!");
            // 定义错误时回调函数
            var on_error =  function() {
                console.log('error');
            };
    
            // 连接RabbitMQ
            client.connect('zcw', '123456', on_connect, on_error, '/');
            $(function () {
                //发送消息到user2队列
                $('#send').click(function () {
                    var content=$('#sendContent').val();
                    console.log(content);
                    client.send("/queue/user2", {}, content);
                    $('#sendContent').val('');
                });
            });
        </script>
    </head>
    <body>
    <div id="debug" style="display: none;">
    
    </div>
    <div id="message">
    
    </div>
    <div id="content">
        <textarea id="sendContent"></textarea>
    </div>
    <div id="success">
    <button id="send" >Send Mssages</button>
    </div>
    
    </body>
    </html>

    测试文件下载链接:https://pan.baidu.com/s/1MZ_ikWWYjLesbgX0_7U35Q 
    提取码:vp7y 

  • 个人笔记如有错误,欢迎指正.

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

为天空着色

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值