• 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. (原文

        

  • 相关阅读:
    iOS开发之窥探UICollectionViewController(三) --使用UICollectionView自定义瀑布流
    iOS开发之窥探UICollectionViewController(二) --详解CollectionView各种回调
    iOS开发之窥探UICollectionViewController(一) -- Ready Your CollectionViewController
    iOS开发之SQLite--C语言接口规范(五)——iOS开发使用SQLite实例
    iOS开发之SQLite--C语言接口规范(四) —— Result Values From A Query
    iOS开发之SQLite--C语言接口规范(三)——Binding Values To Prepared Statements
    iOS开发之SQLite-C语言接口规范(二) —— Prepared Your SQL Statements
    iOS开发之SQLite-C语言接口规范(一)——Ready And Open Your SQLite
    iOS开发之ImageView复用实现图片无限轮播
    iOS开发之多图片无缝滚动组件封装与使用
  • 原文地址:https://www.cnblogs.com/Vince-blogs/p/8087233.html
Copyright © 2020-2023  润新知