Spring boot+Maven+Websocket的升级版之stomp的小栗子(此为广播版,即一人发消息多人接收,点对点版本马上更新)

包结构

StompApplication.java

 
 
package stomp;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.boot.autoconfigure.security.SecurityAutoConfiguration;
import org.springframework.context.annotation.ComponentScan;

@SpringBootApplication
@ComponentScan("stomp")
@EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class, SecurityAutoConfiguration.class})
public class StompApplication {
    public static void main(String[] args) {
        SpringApplication.run(StompApplication.class, args);
        System.out.println("stomp启动成功");
    }
}

Mycontroller.java

 
 
package stomp;

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;
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;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class MyController {
    @Autowired
    private SimpMessagingTemplate simpMessagingTemplate;

    @MessageMapping("/send.message")
    public void sendPublicMessage(String str) {
        simpMessagingTemplate.convertAndSend("/topic/public.messages", str);
    }

    @RequestMapping("/")
    public String toIndex() {
        return "stomp";
    }
}

WebSocketConfiguration.java

package stomp;

import org.springframework.context.annotation.Configuration;
import org.springframework.messaging.simp.config.MessageBrokerRegistry;
import org.springframework.web.socket.config.annotation.AbstractWebSocketMessageBrokerConfigurer;
import org.springframework.web.socket.config.annotation.EnableWebSocketMessageBroker;
import org.springframework.web.socket.config.annotation.StompEndpointRegistry;

@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfiguration extends AbstractWebSocketMessageBrokerConfigurer {

    @Override
    public void registerStompEndpoints(StompEndpointRegistry registry) {
        registry.addEndpoint("/stompwebsocket").withSockJS();
    }

    @Override
    public void configureMessageBroker(MessageBrokerRegistry config) {
        config.enableSimpleBroker("/queue/", "/topic/");
        config.setApplicationDestinationPrefixes("/app");
    }

}

stomp.html

<html>
<script src="http://cdn.bootcss.com/sockjs-client/1.1.1/sockjs.min.js"></script>
<script src="http://cdn.bootcss.com/stomp.js/2.3.3/stomp.js"></script>
<script type="text/javascript">
    var socket = new SockJS('/stompwebsocket');
    var stompClient = Stomp.over(socket);
    stompClient.connect({}, function(frame) {
        stompClient.subscribe('/topic/public.messages', function(txt) {
            alert(txt);
        });
    });

    function send(txt) {
        stompClient.send("/app/send.message", {}, txt);
    }
</script>
<button onclick="send(new Date())">Send</button>
</html>


application.properties

server.port=8091

pom.xml(有很多用不到的,但是都加上肯定不会错,所以先不去除了)

 
 
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.5.8.RELEASE</version>
  </parent>
  <groupId>com.hyxt</groupId>
  <artifactId>RealTimeMonitoring</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>jar</packaging>

  <name>RealTimeMonitoring</name>
  <!-- APP -->

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <dubbo-spring-boot>1.0.0</dubbo-spring-boot>
    <dubbo-version>2.5.7</dubbo-version>
    <netty-version>4.1.17.Final</netty-version>
    <spring-framework-version>4.3.12.RELEASE</spring-framework-version>
    <junit-version>4.12</junit-version>
  </properties>


  <dependencies>
    <dependency>
      <groupId>com.hyxt</groupId>
      <artifactId>mysqlSDK</artifactId>
      <version>1.0-SNAPSHOT</version>
    </dependency>
    <dependency>
      <groupId>RedisCache_sdk</groupId>
      <artifactId>RedisCache_sdk</artifactId>
      <version>1.1.1</version>
    </dependency>

    <dependency>
      <groupId>org.apache.commons</groupId>
      <artifactId>commons-collections4</artifactId>
      <version>4.1</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/org.apache.commons/commons-lang3 -->
    <dependency>
      <groupId>org.apache.commons</groupId>
      <artifactId>commons-lang3</artifactId>
      <version>3.4</version>
    </dependency>


    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <dependency>
      <groupId>org.mybatis.spring.boot</groupId>
      <artifactId>mybatis-spring-boot-starter</artifactId>
      <version>1.3.1</version>
    </dependency>

    <!-- Spring Boot Dubbo 依赖 -->
    <dependency>
      <groupId>io.dubbo.springboot</groupId>
      <artifactId>spring-boot-starter-dubbo</artifactId>
      <version>${dubbo-spring-boot}</version>
    </dependency>

    <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>dubbo</artifactId>
      <version>${dubbo-version}</version>
    </dependency>

    <dependency>
      <groupId>io.netty</groupId>
      <artifactId>netty-all</artifactId>
      <version>${netty-version}</version>
    </dependency>

    <!--spring框架依赖-->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-core</artifactId>
      <version>${spring-framework-version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
      <version>${spring-framework-version}</version>
    </dependency>


    <!--测试框架-->
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-test</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>${junit-version}</version>
      <scope>test</scope>
    </dependency>

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-test</artifactId>
      <version>${spring-framework-version}</version>
      <scope>test</scope>
    </dependency>


<!--    <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>fastjson</artifactId>
      <version>1.1.41</version>
    </dependency>-->
    <!-- https://mvnrepository.com/artifact/com.alibaba/fastjson -->
    <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>fastjson</artifactId>
      <version>1.2.44</version>
    </dependency>

    <!--thymeleaf依赖框架-->
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-thymeleaf</artifactId>
    </dependency>

    <dependency>
      <!--Spring 官方提供的热部署插件 -->
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-devtools</artifactId>
      <optional>true</optional>
    </dependency>

    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-jdbc</artifactId>
    </dependency>

    <dependency>
      <groupId>org.jodd</groupId>
      <artifactId>jodd-core</artifactId>
      <version>3.9.1</version>
    </dependency>

    <dependency>
      <groupId>org.apache.bval</groupId>
      <artifactId>org.apache.bval.bundle</artifactId>
      <version>1.1.2</version>
    </dependency>
    <dependency>
      <groupId>org.jdom</groupId>
      <artifactId>jdom2</artifactId>
      <version>2.0.6</version>
    </dependency>

  </dependencies>

  <profiles>
    <profile>
      <!-- 本地开发环境 -->
      <id>development</id>
      <properties>
        <profiles.active>development</profiles.active>
      </properties>
      <activation>
        <activeByDefault>true</activeByDefault>
      </activation>
    </profile>
    <profile>
      <!-- 测试环境 -->
      <id>test</id>
      <properties>
        <profiles.active>test</profiles.active>
      </properties>
    </profile>
    <profile>
      <!-- 生产环境 -->
      <id>production</id>
      <properties>
        <profiles.active>production</profiles.active>
      </properties>
    </profile>
  </profiles>

  <build>
    <plugins>

      <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
        <version>1.5.8.RELEASE</version>
      </plugin>
      <!--编译插件,指定编译的版本为jdk1.8 -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <configuration>
          <source>1.8</source>
          <target>1.8</target>
        </configuration>
      </plugin>

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-resources-plugin</artifactId>
        <configuration>
          <encoding>UTF-8</encoding>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
        <configuration>
          <fork>true</fork>
        </configuration>
      </plugin>
    </plugins>


    <resources>
      <resource>
        <directory>src/main/resources</directory>
        <!-- 资源根目录排除各环境的配置,使用单独的资源目录来指定 -->
        <excludes>
          <exclude>test/*</exclude>
          <exclude>production/*</exclude>
          <exclude>development/*</exclude>
        </excludes>
      </resource>
      <resource>
        <directory>src/main/resources/${profiles.active}</directory>
      </resource>
    </resources>


  </build>

  <!-- 本地快照 和release 发布 的配置 -->
  <distributionManagement>
    <repository>
      <id>releases</id>
      <name>User Project Release</name>
      <!-- release版本的url地址 -->
      <url>http://10.185.162.49:9901/nexus/content/repositories/releases/</url>
    </repository>

    <snapshotRepository>
      <id>snapshots</id>
      <name>User Project SNAPSHOTS</name>
      <!-- snapshot版本的url地址 -->
      <url>http://10.185.162.49:9901/nexus/content/repositories/snapshots/</url>
    </snapshotRepository>
  </distributionManagement>

  <repositories>
    <repository>
      <id>central</id>
      <name>central</name>
      <!-- 配置仓库的地址 -->
      <url>http://10.185.162.49:9901/nexus/content/groups/public/</url>
    </repository>
  </repositories>

  <!-- 插件依赖仓库 -->
  <pluginRepositories>
    <pluginRepository>
      <id>dev-nexus</id>
      <url>http://10.185.162.49:9901/nexus/content/groups/public/</url>
      <snapshots>
        <enabled>true</enabled>
        <updatePolicy>always</updatePolicy>
      </snapshots>
    </pluginRepository>
  </pluginRepositories>

</project>


运行效果(在两个浏览器中,输入地址localhost:8091,在一个浏览器中点击send,显示时间信息,
     同时另一个浏览器中的界面也会收到相关信息,也可以在同一浏览器开多个该界面来测试
     一人发送多人同时接收)



猜你喜欢

转载自blog.csdn.net/zxljsbk/article/details/79292656
今日推荐