当前位置:首页 > 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的有效方法 理解基础概念 Java是一门面向对象的编程语言,掌握基础概念如变量、数据类型、运算符、控制语句(if-else、循环)是必要的。面向对象的核心概念包括类、对象、继承、多态和封装…

java如何创建包

java如何创建包

创建Java包的步骤 在Java中,包(package)用于组织和管理类文件,避免命名冲突。以下是创建Java包的详细方法: 定义包名 在Java源文件的开头使用package关键字声明包名。包名…

如何安装java软件

如何安装java软件

下载Java安装包 访问Oracle官方网站或OpenJDK开源项目页面,选择适合操作系统的Java版本(如Windows、macOS或Linux)。对于个人使用,通常下载JDK(Java Devel…

react 如何使用canvas

react 如何使用canvas

使用 Canvas 在 React 中的方法 基本用法 在 React 中使用 canvas 需要通过 useRef 或 createRef 获取 DOM 节点。以下是一个简单的示例: im…

java如何调试

java如何调试

调试Java程序的基本方法 使用IDE内置的调试工具(如IntelliJ IDEA或Eclipse)是最常见的方式。在代码行号旁点击设置断点,启动调试模式后,程序会在断点处暂停,允许查看变量值、调用栈…

如何导入java项目

如何导入java项目

导入Java项目的方法 使用IDE导入(如IntelliJ IDEA或Eclipse) 打开IDE后选择导入现有项目,导航至项目根目录(包含pom.xml或build.gradle的文件位置)。IDE…