在前面的文章:《Springboot项目开发websocket服务端》我们演示过使用springboot来构建websocket,但是那种方式是使用的传统的方式,这篇文章我们介绍下使用springboot自带的@ServerEndpoint来构建一个websocket的服务端。下面直接开始演示:
一、创建一个maven项目,并且引入如下的依赖
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!--websocket连接需要使用到的包 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-websocket</artifactId> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.56</version> </dependency> <dependency> <groupId>com.yomahub</groupId> <artifactId>tlog-all-spring-boot-starter</artifactId> <version>1.5.0</version> </dependency>
二、创建一个websocketconfig
这里需要创建一个websocketconfig,主要是为了ServerEndpointExporter。代码如下:
package com.websocket.conf; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.socket.server.standard.ServerEndpointExporter; @Configuration public class WebSocketConfig { @Bean public ServerEndpointExporter serverEndpointExporter(){ return new ServerEndpointExporter(); } }
三、创建一个websocketserver,编写websocket监听
这里直接上websocket监听的代码
package com.websocket.controller; import javax.websocket.OnClose; import javax.websocket.OnError; import javax.websocket.OnMessage; import javax.websocket.OnOpen; import javax.websocket.Session; import javax.websocket.server.ServerEndpoint; import org.springframework.stereotype.Component; import com.websocket.utils.OnlineCalUtils; import com.websocket.utils.SocketServerProduct; import lombok.extern.slf4j.Slf4j; /** * @ServerEndPoint 注解是一个类层次的注解,它的功能主要是将目前的类定义成一个websocket服务器端, * 注解的值将被用于监听用户连接的终端访问URL地址,客户端可以通过这个URL连接到websocket服务器端 */ @ServerEndpoint("/websocket") @Component @Slf4j public class WebSocketServer { private SocketServerProduct socketServerProduct = new SocketServerProduct(); @OnOpen public void onOpen(Session session) { OnlineCalUtils.addOnlineCount(); log.info("有新连接加入!当前在线人数为 :{} ", getOnlineCount()); } @OnClose public void onClose() { OnlineCalUtils.subOnlineCount(); log.info("有一连接关闭!当前在线人数为: {}", getOnlineCount()); } @OnMessage public void onMessage(String message, Session session) { log.info("来自客户端的消息:{}", message); // 群发消息 socketServerProduct.sendMessage(session, message); } @OnError public void onError(Session session, Throwable throwable) { log.info("发生错误!"); throwable.printStackTrace(); } public static int getOnlineCount() { return OnlineCalUtils.onlineCount.get(); } }
到此为止,我们就完成了整个websocket的服务端编写。
四、运行测试
在项目里面,我们提供有一个index.html的页面,我们把整个springboot项目运行起来之后,直接访问:http://127.0.0.1:8080 就可以看到测试端网页了。
发送一条消息,看看服务端
以上我们就简单的实现了websocket的服务端。最后按照惯例,附上本案例的源码,登录后即可下载。
还没有评论,来说两句吧...