在现代Web开发中,实时通信已成为不可或缺的功能。无论是聊天应用、股票行情推送还是在线协作工具,都需要服务器主动向客户端推送数据。传统的HTTP请求-响应模式无法满足这种需求,而WebSocket协议正是为此而生。
本篇Java WebSocket教程将带你从零开始,使用Java语言搭建一个简单的WebSocket服务端,并通过前端页面进行测试。即使你是编程小白,也能轻松上手!
WebSocket是一种在单个TCP连接上进行全双工通信的协议。它允许客户端和服务器之间进行双向数据传输,且连接建立后无需反复握手,大大降低了通信开销。
要使用Java开发WebSocket应用,我们推荐使用Java EE(现 Jakarta EE)中的标准API —— javax.websocket。如果你使用的是Spring Boot框架,也可以使用Spring对WebSocket的封装,但本教程将基于原生Java WebSocket API,便于理解底层原理。
你需要准备:
首先,我们创建一个Java类,并使用注解将其标记为WebSocket端点。
import javax.websocket.OnClose;import javax.websocket.OnMessage;import javax.websocket.OnOpen;import javax.websocket.Session;import javax.websocket.server.ServerEndpoint;import java.io.IOException;import java.util.concurrent.CopyOnWriteArraySet;@ServerEndpoint("/websocket")public class MyWebSocketServer { // 用于存储所有连接的会话 private static CopyOnWriteArraySet<Session> sessions = new CopyOnWriteArraySet<>(); @OnOpen public void onOpen(Session session) { sessions.add(session); System.out.println("有新连接加入!当前在线人数为:" + sessions.size()); } @OnMessage public void onMessage(String message, Session session) { System.out.println("收到消息:" + message); // 广播消息给所有客户端 for (Session s : sessions) { try { s.getBasicRemote().sendText("服务器收到消息:" + message); } catch (IOException e) { e.printStackTrace(); } } } @OnClose public void onClose(Session session) { sessions.remove(session); System.out.println("有一连接关闭!当前在线人数为:" + sessions.size()); }} 代码说明:
@ServerEndpoint("/websocket"):定义WebSocket的访问路径为 /websocket。@OnOpen:当客户端连接时触发。@OnMessage:当收到客户端消息时触发。@OnClose:当连接关闭时触发。CopyOnWriteArraySet 线程安全地保存所有会话。如果你使用Maven,确保在 pom.xml 中添加WebSocket依赖(以Tomcat为例):
<dependency> <groupId>javax.websocket</groupId> <artifactId>javax.websocket-api</artifactId> <version>1.1</version> <scope>provided</scope></dependency> 然后将项目打包成WAR文件,部署到Tomcat等支持WebSocket的服务器中。
创建一个简单的HTML页面来测试我们的WebSocket服务:
<!DOCTYPE html><html lang="zh-CN"><head> <meta charset="UTF-8"> <title>WebSocket测试</title></head><body> <h2>Java WebSocket 实时通信测试</h2> <input type="text" id="message" placeholder="输入消息" /> <button onclick="sendMessage()">发送</button> <div id="output" style="margin-top: 20px; padding: 10px; border: 1px solid #ccc;"></div> <script> const ws = new WebSocket('ws://localhost:8080/your-app/websocket'); ws.onopen = function(event) { document.getElementById('output').innerHTML += '<p>✅ 连接已建立</p>'; }; ws.onmessage = function(event) { document.getElementById('output').innerHTML += '<p>📥 收到:' + event.data + '</p>'; }; ws.onclose = function(event) { document.getElementById('output').innerHTML += '<p>❌ 连接已关闭</p>'; }; function sendMessage() { const msg = document.getElementById('message').value; ws.send(msg); document.getElementById('message').value = ''; } </script></body></html> 注意:请将 ws://localhost:8080/your-app/websocket 中的 your-app 替换为你的实际项目名。
通过本篇Java WebSocket教程,你已经学会了如何使用Java实现一个简单的WebSocket服务端,并通过前端页面进行实时通信测试。这项技术是构建Java实时通信应用的基础。
记住,WebSocket入门的关键在于理解其生命周期方法(onOpen、onMessage、onClose)以及如何管理多个客户端连接。随着你对Java WebSocket的深入掌握,你可以进一步实现用户认证、私聊、房间分组等高级功能。
现在,打开你的IDE,动手试试吧!实时通信的世界,从这一行代码开始。
本文由主机测评网于2025-12-07发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://www.vpshk.cn/2025124091.html