一、Socket通信概述
Socket是一种通信协议,是实现网络通信的基础。通常用于两台计算机之间的通信,一台计算机充当服务端,另一台计算机充当客户端,通过Socket建立连接进行通信。
Socket通信可分为TCP和UDP两种协议类型。TCP是一种面向连接的通信协议,它在通信前需要建立连接,通信结束后需要关闭连接,并保证数据的可靠传输。UDP则是一种无连接的通信协议,它不需要建立连接及断开连接,且不保证数据的可靠传输。
二、Spring Boot集成Socket
使用Spring Boot集成Socket可以快速构建实时通信应用。下面通过一个简单的示例来演示如何在Spring Boot应用中集成Socket。
三、示例说明
我们以一个简单的聊天室应用为例,演示如何使用Spring Boot集成Socket。具体实现过程如下:
1. 创建Spring Boot工程
首先需要创建一个Spring Boot工程,可以使用Spring Initializr创建一个基本的Spring Boot工程。
2. 添加Socket依赖
在工程中添加Socket依赖,可以在pom.xml中加入以下代码:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-websocket</artifactId> </dependency>
3. 创建WebSocket处理类
创建一个WebSocket处理类,可以在类上使用@ServerEndpoint注解来标识它是一个WebSocket处理类。在WebSocket处理类中可以定义多个方法来处理不同的请求。
@ServerEndpoint("/websocket") public class WebSocketServer { private static Setsessions = Collections.synchronizedSet(new HashSet ()); @OnOpen public void onOpen(Session session) { sessions.add(session); System.out.println("WebSocket opened: " + session.getId()); } @OnMessage public void onMessage(String message, Session session) throws IOException { System.out.println("Message received: " + message); for (Session s : sessions) { if (!s.equals(session)) { s.getBasicRemote().sendText(message); } } } @OnClose public void onClose(Session session) { sessions.remove(session); System.out.println("WebSocket closed: " + session.getId()); } }
4. 配置WebSocket
添加一个WebSocketConfigurer的实例来配置WebSocket。
@Configuration @EnableWebSocket public class WebSocketConfig implements WebSocketConfigurer { @Override public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) { registry.addHandler(new WebSocketServer(), "/websocket"); } }
5. 创建页面
创建一个简单的HTML页面来作为用户界面,其中包含了一个用于输入消息的输入框和一个用于显示消息的区域。同时,在页面中使用JavaScript来建立WebSocket连接,向服务器发送消息并接收消息。
WebSocket Chatroom <script src="https://code.jquery.com/jquery-3.3.1.min.js"></script> <input id="message" type="text"> <script type="text/javascript"> var websocket = new WebSocket("ws://" + window.location.host + "/websocket"); websocket.onopen = function(event) { console.log("WebSocket opened: " + event); } websocket.onmessage = function(event) { console.log("Message received: " + event); $("#chatroom").append("<p>" + event.data + "</p>"); } $("#send").click(function() { var message = $("#message").val(); websocket.send(message); console.log("Message sent: " + message); $("#message").val(""); }); </script>