转自:

在springboot中使用websocket与其他方式会有所不同,主要还是因为springboot会内置tomcat以及springboot做了一定的配置。

下面针对springboot中使用websocket功能进行一下记录。

先说一下我们要简单实现的一个功能:

1、实现多用户连接。

2、客户端向服务端发送信息。

3、统计在线人数。

4、服务端向客户端发送信息。

一、首先pom中添加相关依赖

Springboot整合cxf编写wsdl接口 springboot整合websocket_tomcat

thymeleaf我们只是在这里使用一下,当然你不使用它的话可以不必添加。

注意:1、如果是使用springboot内置tomcat进行部署的话,pom到这里就够了,如果是使用war包方式到tomcat中进行部署,应该还需添加一下

Springboot整合cxf编写wsdl接口 springboot整合websocket_websocket_02

这个包,因为这里面带有javaee对websocket支持的标准规范(jsr356)的注解。主要是@ServerEndpoint。2、使用springboot内置tomcat进行部署的话,在编写websocket具体实现类之前,要注入ServerEndpointExporter,这个bean会自动注册使用了@ServerEndpoint注解声明的Websocket endpoint。而如果使用war包部署到tomcat中进行部署的话,就不必做此步骤,因为它将由容器自己提供和管理。

Springboot整合cxf编写wsdl接口 springboot整合websocket_spring_03

二、编写服务端具体实现类。

Springboot整合cxf编写wsdl接口 springboot整合websocket_客户端_04

三、编写客户端。

Springboot整合cxf编写wsdl接口 springboot整合websocket_spring_05

四、编写统计页面

Springboot整合cxf编写wsdl接口 springboot整合websocket_websocket_06

Springboot整合cxf编写wsdl接口 springboot整合websocket_tomcat_07

到此,程序基本编写完毕,接下来我们进行测试。

首先我们用两个浏览器(火狐与谷歌,正好也用来测试这两个浏览器对于websocket的支持性)来模拟两个用户

用户1:火狐浏览器

Springboot整合cxf编写wsdl接口 springboot整合websocket_tomcat_08

用户2:谷歌浏览器

Springboot整合cxf编写wsdl接口 springboot整合websocket_tomcat_09

我们分别用这两个用户向服务器发送消息。

Springboot整合cxf编写wsdl接口 springboot整合websocket_websocket_10

Springboot整合cxf编写wsdl接口 springboot整合websocket_spring_11

然后看下服务器的控制台输出

Springboot整合cxf编写wsdl接口 springboot整合websocket_websocket_12

可以看到服务器已经成功接收到来自两个客户端传来的消息,这就已经实现了我们最初提到的第一个与第二个需求。接下来我们看第三与第四个需求。

打开我们的统计页面

Springboot整合cxf编写wsdl接口 springboot整合websocket_客户端_13

可以看到,在线人数,以及所在线的人员我们都已统计到,接下来我们可以选择给他们其中一个人发送消息。

Springboot整合cxf编写wsdl接口 springboot整合websocket_客户端_14


Springboot整合cxf编写wsdl接口 springboot整合websocket_spring_15

可以看到,张三成功收到了消息。

最后,我们可以点击全部发送,给两个客户端都发送消息。

Springboot整合cxf编写wsdl接口 springboot整合websocket_tomcat_16

Springboot整合cxf编写wsdl接口 springboot整合websocket_tomcat_17

Springboot整合cxf编写wsdl接口 springboot整合websocket_spring_18

两个客户端都成功收到了消息。