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

 

    


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM