WebSocket 是一种在单个 TCP 连接上进行全双工通信的协议,常用于实时数据传输场景。以下是 Java 中实现 WebSocket 的关键步骤与示例:


📌 基本概念

  • 全双工通信:客户端与服务端可同时发送和接收数据(不同于 HTTP 的单向请求)
  • 协议升级:通过 HTTP 握手建立 WebSocket 连接(ws://wss://
  • 应用场景:在线聊天、实时通知、数据订阅等需要低延迟交互的场景
WebSocket_概念

🧰 实现步骤

客户端

  1. 创建连接:WebSocketClient client = new WebSocketClient(new URI("ws://example.com"))
  2. 发送消息:client.send("Hello Server!")
  3. 接收消息:client.setOnMessageHandler(...) 配置回调函数
  4. 处理事件:client.setOnOpenHandler(...)client.setOnCloseHandler(...)

服务端

  1. 定义端点:@ServerEndpoint("/ws/endpoint") 注解标注类
  2. 处理连接:@OnOpen 方法接收 Session 对象
  3. 消息处理:@OnMessage 方法实现数据交互逻辑
  4. 关闭连接:@OnClose 方法释放资源
WebSocket_handshake

💻 示例代码

// 服务端示例(使用 Tomcat WebSocket API)
@ServerEndpoint("/chat")
public class ChatEndpoint {
    @OnOpen
    public void onOpen(Session session) {
        System.out.println("连接已建立");
    }

    @OnMessage
    public void onMessage(String message, Session session) {
        System.out.println("收到消息: " + message);
    }
}
// 客户端示例(使用 Java NIO)
WebSocketClient client = new WebSocketClient(new URI("ws://localhost:8080"));
client.connect(new AsyncResult() {
    @Override
    public void handle(Session session) {
        session.getRemote().sendString("Ping");
    }
});

⚠️ 注意事项

  • ✅ 使用 @ServerEndpoint 注解时需添加 javax.websocket 依赖
  • 🔒 建议通过 wss:// 使用加密连接(SSL/TLS)
  • 🔄 需处理心跳机制防止连接超时
  • 🌐 跨域问题需配置 @ServerEndpointconfig 参数

📚 扩展阅读

Java网络编程 可深入了解 TCP/IP 协议基础
WebSocket教程进阶 探讨性能优化与安全策略

WebSocket_代码示例