Java连接WebSocket的实现教程
作者:zru_9602
这篇文章主要介绍了Java连接WebSocket的实现教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
Java 连接 WebSocket 入门教程
1. WebSocket 简介
WebSocket 是一种全双工通信协议,它允许客户端和服务器之间建立持久连接,实现低延迟、实时交互。相比于传统的 HTTP 轮询,WebSocket 具有更高的效率和更低的带宽消耗。
2. Java WebSocket 依赖
在 Java 中,我们可以使用 javax.websocket
或 Spring WebSocket
来实现 WebSocket 连接。
2.1 添加 Maven 依赖
- 对于 Java EE WebSocket:
<dependency> <groupId>javax.websocket</groupId> <artifactId>javax.websocket-api</artifactId> <version>1.1</version> </dependency>
- 对于 Spring WebSocket:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-websocket</artifactId> </dependency>
3. Java WebSocket 服务器端实现
3.1 使用 Java EE 实现 WebSocket 服务器
import javax.websocket.*; import javax.websocket.server.ServerEndpoint; import java.io.IOException; import java.util.concurrent.CopyOnWriteArraySet; @ServerEndpoint("/websocket") public class WebSocketServer { private static final CopyOnWriteArraySet<Session> sessions = new CopyOnWriteArraySet<>(); @OnOpen public void onOpen(Session session) { sessions.add(session); System.out.println("新连接建立: " + session.getId()); } @OnMessage public void onMessage(String message, Session session) throws IOException { System.out.println("收到消息: " + message); for (Session s : sessions) { s.getBasicRemote().sendText("服务器响应: " + message); } } @OnClose public void onClose(Session session) { sessions.remove(session); System.out.println("连接关闭: " + session.getId()); } @OnError public void onError(Session session, Throwable error) { error.printStackTrace(); } }
3.2 配置 WebSocket 服务器
如果使用的是 Spring Boot,需要创建 WebSocket 配置类:
import org.springframework.context.annotation.Configuration; import org.springframework.web.socket.config.annotation.EnableWebSocket; import org.springframework.web.socket.config.annotation.WebSocketConfigurer; import org.springframework.web.socket.config.annotation.WebSocketHandlerRegistry; @Configuration @EnableWebSocket public class WebSocketConfig implements WebSocketConfigurer { @Override public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) { registry.addHandler(new MyWebSocketHandler(), "/ws").setAllowedOrigins("*"); } }
4. Java WebSocket 客户端实现
使用 java.net.http.WebSocket
进行客户端连接:
import java.net.URI; import java.net.http.HttpClient; import java.net.http.WebSocket; import java.util.concurrent.CompletionStage; public class WebSocketClient { public static void main(String[] args) { HttpClient client = HttpClient.newHttpClient(); WebSocket webSocket = client.newWebSocketBuilder() .buildAsync(URI.create("ws://localhost:8080/websocket"), new WebSocketListener()) .join(); webSocket.sendText("Hello WebSocket!", true); } } class WebSocketListener implements WebSocket.Listener { @Override public void onOpen(WebSocket webSocket) { System.out.println("WebSocket 连接成功"); webSocket.request(1); } @Override public CompletionStage<?> onText(WebSocket webSocket, CharSequence data, boolean last) { System.out.println("收到消息: " + data); webSocket.request(1); return null; } }
5. 测试 WebSocket 连接
- 启动 Java WebSocket 服务器。
- 运行 WebSocket 客户端,检查是否成功连接并发送/接收消息。
- 也可以使用 WebSocket 在线测试工具(如 websocket.org)进行测试。
总结
通过本文,你学习了如何使用 Java 连接 WebSocket,包括服务器端和客户端的实现。
WebSocket 适用于实时通信场景,如聊天应用、数据推送等,提高了网络通信的效率和交互体验。
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。