当前位置:首页 > Java

java如何使用websocket

2026-03-23 06:56:17Java

Java 使用 WebSocket 的方法

添加依赖

在 Maven 项目中,添加以下依赖以支持 WebSocket:

<dependency>
    <groupId>javax.websocket</groupId>
    <artifactId>javax.websocket-api</artifactId>
    <version>1.1</version>
    <scope>provided</scope>
</dependency>

如果是 Spring Boot 项目,可以使用以下依赖:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-websocket</artifactId>
</dependency>

创建 WebSocket 端点

使用 @ServerEndpoint 注解定义一个 WebSocket 端点,并实现相关方法:

java如何使用websocket

import javax.websocket.*;
import javax.websocket.server.ServerEndpoint;

@ServerEndpoint("/ws")
public class WebSocketEndpoint {

    @OnOpen
    public void onOpen(Session session) {
        System.out.println("WebSocket 连接建立: " + session.getId());
    }

    @OnMessage
    public void onMessage(String message, Session session) {
        System.out.println("收到消息: " + message);
        session.getAsyncRemote().sendText("服务器回复: " + message);
    }

    @OnClose
    public void onClose(Session session) {
        System.out.println("WebSocket 连接关闭: " + session.getId());
    }

    @OnError
    public void onError(Session session, Throwable error) {
        System.out.println("WebSocket 错误: " + error.getMessage());
    }
}

配置 WebSocket 服务器

在 Java EE 环境中,WebSocket 会自动注册。对于 Spring Boot,需要配置 WebSocketConfigurer

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("*");
    }
}

客户端连接

使用 JavaScript 在浏览器中连接 WebSocket:

java如何使用websocket

const socket = new WebSocket("ws://localhost:8080/ws");

socket.onopen = function() {
    console.log("连接已建立");
    socket.send("Hello, WebSocket!");
};

socket.onmessage = function(event) {
    console.log("收到消息: " + event.data);
};

socket.onclose = function() {
    console.log("连接已关闭");
};

处理二进制消息

如果需要处理二进制数据,可以在端点中定义 @OnMessage 方法:

@OnMessage
public void onBinaryMessage(ByteBuffer data, Session session) {
    System.out.println("收到二进制数据: " + data.remaining() + " bytes");
}

群发消息

使用 SessiongetOpenSessions() 方法可以向所有连接的客户端发送消息:

@OnMessage
public void onMessage(String message, Session session) {
    for (Session s : session.getOpenSessions()) {
        if (s.isOpen()) {
            s.getAsyncRemote().sendText("广播: " + message);
        }
    }
}

注意事项

  • WebSocket 连接需要支持 WebSocket 的服务器(如 Tomcat 8+、Jetty 9+)。
  • 在生产环境中,建议添加心跳机制和超时处理。
  • 对于高并发场景,考虑使用异步发送(getAsyncRemote())而非同步发送(getBasicRemote())。

以上方法涵盖了 Java 中 WebSocket 的基本使用场景,可以根据实际需求进一步扩展功能。

分享给朋友:

相关文章

java如何调用接口

java如何调用接口

调用接口的基本方法 在Java中调用接口通常涉及实现接口或使用接口引用对象。以下是几种常见场景的示例: 定义接口 public interface MyInterface { void d…

如何卸载java

如何卸载java

卸载Java的步骤 Windows系统卸载方法 打开控制面板,选择“程序和功能”或“卸载程序”。在列表中找到Java相关条目(如“Java 8 Update 251”),右键选择卸载并跟随向导完成操…

如何编译java文件

如何编译java文件

安装JDK 确保系统已安装Java Development Kit(JDK)。可通过命令行输入 javac -version 和 java -version 验证。若未安装,需从Oracle或Open…

如何使用 react native

如何使用 react native

安装开发环境 确保已安装 Node.js(建议使用 LTS 版本)。通过以下命令安装 React Native 命令行工具: npm install -g expo-cli 或使用 Yarn: y…

react refs 如何使用

react refs 如何使用

React Refs 的基本概念 Refs 是 React 提供的一种访问 DOM 节点或 React 组件实例的方式。通常在 React 的数据流中,父子组件通过 props 进行通信,但在某些情况…

教你如何完全卸载java

教你如何完全卸载java

卸载 Java 的步骤 Windows 系统 打开控制面板,选择“程序和功能”或“卸载程序”。在列表中找到 Java 相关的条目,通常显示为“Java”或“Java(TM)”。右键点击选择卸载,按照…