========================前后台分别要做的事情========================
一.前台 使用js【HTML页面】
var websocket = new WebSocket("ws://localhost:8080/echo");
获取socket连接。
注意1:
URL地址是"ws://后台服务IP:Port/路由地址"
注意2:
路由地址是任意自定义的。后台会有配置关于一个路由地址的【Handler处理器】和【Interceptor拦截器】
注意3:
一种路由地址之间,是可以相互通信的。
例如:
html1 中配置路由地址:echo html2 中也配置路由地址:echo
在服务器配置了 这一种路由地址echo的【Handler处理器】和【Interceptor拦截器】后。
这就代表,html1和html2都在服务器上注册了关于 路由地址echo 的webSocket服务。
现在,只要html1使用echo注册的webSocket服务发送消息(websocket.send(json);),服务器端就会拦截到消息,并对其他注册了echo这个webSocket服务的页面发送信息。
可以是对单点发送,也可以是对所有广播。
二.后台服务器端 spring boot 集成 webSocket
后台服务器端,需要做三件事情:
1.配置webSocket的拦截器,实现HandshakeInterceptor接口
(拦截和webSocket相关的信息)
2.配置webSocket的处理器,实现WebSocketHandler接口
(处理对一个路由地址的相关操作,例如 监听socket连接成功,socket关闭连接,处理信息等)
3.完善webSocket的配置,实现WebSocketConfigurer接口
(将处理器handler 和 一个路由地址 绑定,并对本地址设置拦截器Interceptor,最后设置访问域名的限制)
=====================spring boot 集成 webSocket===================
【完整项目结构在最下方可见】
二.完善代码
1.pom文件完整示例
<?xml version="1.0" encoding="UTF-8"?> <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>2.0.5.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.sxd</groupId> <artifactId>socket-demo</artifactId> <version>0.0.1-SNAPSHOT</version> <name>socket-demo</name> <description>Demo project for Spring Boot And Socket</description> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <!--需要添加的jar 依赖--> <!-- json工具 --> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>LATEST</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-freemarker</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-websocket</artifactId> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> <scope>compile</scope> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>