zoukankan      html  css  js  c++  java
  • ActiveMQ、Stomp、SockJS入门级应用

    使用ActiveMQ、Stomp、SockJS实现实时在线聊天

      ActiveMQ : 强大的开源即时通讯和集成模式的服务器。在本项目中充当消息代理服务器,stomp协议服务端。

        安装:在官网下载,直接解压缩,运行cmd,进入bin目录执行 activemq.bat  start;linux中执行 ./activemq start。

      Stomp:stomp是一个文本定向通讯协议。本项目使用stomp协议基于JavaScript的客户端库 stomp.js

        安装:下载stomp.js,引入项目中

      SockJS:SockJS是WebSocket的JavaScript库,是webSocket的实现  

         安装:下载SockJS.js,引入项目中

      第一步 : 创建JavaWeb项目,配置Maven依赖,依赖如下

     1 <properties>
     2         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
     3         <spring.version>4.2.4.RELEASE</spring.version>
     4     </properties>
     5 
     6     <dependencies>
     7         <dependency>
     8             <groupId>org.springframework</groupId>
     9             <artifactId>spring-webmvc</artifactId>
    10             <version>${spring.version}</version>
    11         </dependency>
    12 
    13         <dependency>
    14             <groupId>org.springframework</groupId>
    15             <artifactId>spring-websocket</artifactId>
    16             <version>${spring.version}</version>
    17         </dependency>
    18 
    19         <dependency>
    20             <groupId>org.springframework</groupId>
    21             <artifactId>spring-messaging</artifactId>
    22             <version>${spring.version}</version>
    23         </dependency>
    24 
    25         <dependency>
    26             <groupId>io.projectreactor</groupId>
    27             <artifactId>reactor-net</artifactId>
    28             <version>2.0.7.RELEASE</version>
    29         </dependency>
    30 
    31         <dependency>
    32             <groupId>io.netty</groupId>
    33             <artifactId>netty-all</artifactId>
    34             <version>4.0.33.Final</version>
    35         </dependency>
    36 
    37 
    38         <dependency>
    39             <groupId>com.fasterxml.jackson.core</groupId>
    40             <artifactId>jackson-databind</artifactId>
    41             <version>2.6.4</version>
    42         </dependency>
    43 
    44         <dependency>
    45             <groupId>javax.servlet</groupId>
    46             <artifactId>javax.servlet-api</artifactId>
    47             <version>3.1.0</version>
    48             <scope>provided</scope>
    49         </dependency>
    50 
    51 
    52     </dependencies>

      第二步:配置消息终端,在SpringMVC配置文件中加入如下配置

      

    <websocket:message-broker application-destination-prefix="/app">
            <websocket:stomp-endpoint path="/stomp">
                <websocket:sockjs />
            </websocket:stomp-endpoint>
    
            <websocket:stomp-broker-relay
                prefix="/topic,/queue"
                relay-host="localhost"
                relay-port="61613"
                heartbeat-receive-interval="20000"
                heartbeat-send-interval="20000"
            />
    
        </websocket:message-broker>

      第三步:编写消息处理代码

    package com.its.controller;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.messaging.handler.annotation.MessageMapping;
    import org.springframework.messaging.simp.SimpMessagingTemplate;
    import org.springframework.stereotype.Controller;
    
    @Controller
    public class MessageController {
    
        @Autowired
        private SimpMessagingTemplate template;
    
        @MessageMapping("channel")
        public String send(String message){
    
            String text = message;
    
            template.convertAndSend("/topic/pinkzhuang",text);
    
            return text;
        }
    
    }

      第四步:编写页面消息收发逻辑,页面要引入stomp.js和SockJS.js

    function connect(){
                var socket = new SockJS("http://localhost:8080/ActivityMQStomp/stomp");
                stompClient = Stomp.over(socket);
                stompClient.connect({},function(frame){
                    setConnected(true);
                    console.log("Connected: " + frame);
                    stompClient.subscribe("/topic/pinkzhuang",function(greeting){
                        showGreeting(greeting.body);
                    });
                });
    
            }
    
    function disconnect(){
      stompClient.disconnect();
    }
    
    function sendMessage(message){
      stompClient.send("/app/vince",{},name);
    }

      第五步:管理ActiveMQ

        可登录localhost:8161进入activeMQ的管理页面,初始账号密码均为admin,可以手动在管理页面发送消息 

      The End. (原文

        

  • 相关阅读:
    年轻人的第一个 Spring Boot 应用,太爽了!
    面试问我 Java 逃逸分析,瞬间被秒杀了。。
    Spring Boot 配置文件 bootstrap vs application 到底有什么区别?
    坑爹的 Java 可变参数,把我整得够惨。。
    6月来了,Java还是第一!
    Eclipse 最常用的 10 组快捷键,个个牛逼!
    Spring Cloud Eureka 自我保护机制实战分析
    今天是 Java 诞生日,Java 24 岁了!
    厉害了,Dubbo 正式毕业!
    Spring Boot 2.1.5 正式发布,1.5.x 即将结束使命!
  • 原文地址:https://www.cnblogs.com/Vince-blogs/p/8087233.html
Copyright © 2011-2022 走看看