什么是 WebSocket?Java 中如何实现 WebSocket?

这篇具有很好参考价值的文章主要介绍了什么是 WebSocket?Java 中如何实现 WebSocket?。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

什么是 WebSocket?Java 中如何实现 WebSocket?

WebSocket 简介

WebSocket 是一种新型的网络协议,它允许客户端和服务器之间进行双向通信,可以实现实时数据交互。WebSocket 协议是基于 HTTP 协议的,使用标准的 TCP 连接,可以在客户端和服务器之间建立一条持久化的连接,而不需要像 HTTP 协议那样每次请求都需要重新建立连接。

WebSocket 协议的优点包括:

  • 实时性:WebSocket 协议可以在客户端和服务器之间实现实时数据交互。
  • 性能:WebSocket 协议使用标准的 TCP 连接,可以在客户端和服务器之间建立一条持久化的连接,不需要像 HTTP 协议那样每次请求都需要重新建立连接。这可以提高网络性能,并减少网络带宽的消耗。
  • 跨域支持:WebSocket 协议支持跨域请求,可以在不同的域名之间进行数据交互。
    什么是 WebSocket?Java 中如何实现 WebSocket?,SpringBoot 教程,websocket,java,网络协议

Java 中的 WebSocket 实现

Java 中的 WebSocket 实现主要是通过 JSR 356 规范来实现的,该规范定义了 Java 中的 WebSocket API,包括客户端和服务端两部分。

WebSocket 客户端

Java 中的 WebSocket 客户端可以通过 javax.websocket 包中的 Session 类来实现。以下是一个简单的 WebSocket 客户端示例代码:

@ClientEndpoint
public class MyClient {
    @OnOpen
    public void onOpen(Session session) {
        System.out.println("连接成功");
    }

    @OnMessage
    public void onMessage(String message) {
        System.out.println("收到消息:" + message);
    }

    @OnClose
    public void onClose() {
        System.out.println("连接关闭");
    }

    public static void main(String[] args) throws Exception {
        WebSocketContainer container = ContainerProvider.getWebSocketContainer();
        Session session = container.connectToServer(MyClient.class, URI.create("ws://localhost:8080/websocket"));
        session.getBasicRemote().sendText("Hello, WebSocket");
    }
}

上面的代码实现了一个简单的 WebSocket 客户端,使用 @ClientEndpoint 注解来标识该类是一个 WebSocket 客户端,使用 @OnOpen@OnMessage@OnClose 注解来定义客户端的行为。可以使用 WebSocketContainer 类来创建一个 WebSocket 客户端,并使用 Session 类来操作连接。

WebSocket 服务端

Java 中的 WebSocket 服务端可以通过 javax.websocket 包中的 Endpoint 类来实现。以下是一个简单的 WebSocket 服务端示例代码:

@ServerEndpoint("/websocket")
public class MyServer {
    @OnOpen
    public void onOpen(Session session) {
        System.out.println("连接成功");
    }

    @OnMessage
    public void onMessage(String message, Session session) throws IOException {
        System.out.println("收到消息:" + message);
        session.getBasicRemote().sendText("你好,客户端");
    }

    @OnClose
    public void onClose() {
        System.out.println("连接关闭");
    }

    public static void main(String[] args) throws Exception {
        ServerEndpointConfig config = ServerEndpointConfig.Builder.create(MyServer.class, "/websocket").build();
        WebSocketServerContainer container = (WebSocketServerContainer) ContainerProvider.getWebSocketContainer();
        container.addEndpoint(config);
        System.out.println("服务端启动成功");
        Thread.currentThread().join();
    }
}

上面的代码实现了一个简单的 WebSocket 服务端,使用 @ServerEndpoint 注解来标识该类是一个 WebSocket 服务端,使用 @OnOpen@OnMessage@OnClose 注解来定义服务端的行为。可以使用 WebSocketServerContainer 类来创建一个 WebSocket 服务端,并使用 ServerEndpointConfig 类来配置服务端的连接。

WebSocket 实现示例

下面是一个完整的 WebSocket 实现示例,包括客户端和服务端。该示例实现了一个简单的聊天室,客户端可以向服务端发送消息,并将消息广播给所有在线用户。

服务端```java

@ServerEndpoint(“/chat”)
public class ChatServer {
private static final Set sessions = Collections.synchronizedSet(new HashSet<>());

@OnOpen
public void onOpen(Session session) {
    System.out.println("新用户加入");
    sessions.add(session);
}

@OnMessage
public void onMessage(String message, Session session) throws IOException {
    System.out.println("收到消息:" + message);
    broadcast(message);
}

@OnClose
public void onClose(Session session) {
    System.out.println("用户离开");
    sessions.remove(session);
}

private void broadcast(String message) throws IOException {
    for (Session session : sessions) {
        session.getBasicRemote().sendText(message);
    }
}

public static void main(String[] args) throws Exception {
    ServerEndpointConfig config = ServerEndpointConfig.Builder.create(ChatServer.class, "/chat").build();
    WebSocketServerContainer container = (WebSocketServerContainer) ContainerProvider.getWebSocketContainer();
    container.addEndpoint(config);
    System.out.println("聊天室已启动");
    Thread.currentThread().join();
}

}


上面的代码实现了一个简单的聊天室,使用 `@ServerEndpoint` 注解来标识该类是一个 WebSocket 服务端,使用 `@OnOpen`、`@OnMessage` 和 `@OnClose` 注解来定义服务端的行为。在 `onOpen` 方法中,将新用户加入到 `sessions` 集合中,表示该用户已经加入聊天室。在 `onMessage` 方法中,将收到的消息广播给所有在线用户。在 `onClose` 方法中,将离开的用户从 `sessions` 集合中移除,表示该用户已经离开聊天室。在 `broadcast` 方法中,将消息广播给所有在线用户。

### 客户端

```java
@ClientEndpoint
public class ChatClient {
    private static final String SERVER_URL = "ws://localhost:8080/chat";
    private static final Scanner scanner = new Scanner(System.in);

    @OnOpen
    public void onOpen(Session session) {
        System.out.println("连接成功");
    }

    @OnMessage
    public void onMessage(String message) {
        System.out.println("收到消息:" + message);
    }

    @OnClose
    public void onClose() {
        System.out.println("连接关闭");
    }

    public static void main(String[] args) throws Exception {
        WebSocketContainer container = ContainerProvider.getWebSocketContainer();
        Session session = container.connectToServer(ChatClient.class, URI.create(SERVER_URL));
        System.out.print("请输入您的昵称:");
        String nickname = scanner.nextLine();
        while (true) {
            System.out.print("[" + nickname + "]: ");
            String message = scanner.nextLine();
            session.getBasicRemote().sendText("[" + nickname + "]: " + message);
        }
    }
}

上面的代码实现了一个简单的聊天室客户端,使用 @ClientEndpoint 注解来标识该类是一个 WebSocket 客户端,使用 @OnOpen@OnMessage@OnClose 注解来定义客户端的行为。在 onOpen 方法中,表示连接成功。在 onMessage 方法中,将收到的消息打印到控制台。在 onClose 方法中,表示连接关闭。在 main 方法中,使用 WebSocketContainer 类来创建一个 WebSocket 客户端,并使用 Session 类来操作连接。用户需要输入昵称,并通过控制台输入消息发送给服务端。

总结

本文介绍了 WebSocket 协议的基本概念和 Java 中的 WebSocket 实现方式。通过示例代码,演示了如何在 Java 中实现一个简单的聊天室,包括服务端和客户端。WebSocket 协议具有实时性、性能和跨域支持等优势,在实时数据交互的场景中得到广泛应用。文章来源地址https://www.toymoban.com/news/detail-574133.html

到了这里,关于什么是 WebSocket?Java 中如何实现 WebSocket?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Java:SpringBoot整合WebSocket实现服务端向客户端推送消息

    思路: 后端通过websocket向前端推送消息,前端统一使用http协议接口向后端发送数据 本文仅放一部分重要的代码,完整代码可参看github仓库 websocket 前端测试 :http://www.easyswoole.com/wstool.html 依赖 项目目录 完整依赖 配置 WebSocketServer.java 前端页面 websocket.html 前端逻辑 index.js 参

    2024年02月04日
    浏览(53)
  • 如何使用Java Websocket实现实时数据监控功能?

    随着互联网应用的不断发展,实时数据监控功能成为了许多应用的必备功能之一。本文将介绍如何使用Java WebSocket实现实时数据监控功能,并提供具体的代码示例。 :Java WebSocket、实时数据监控、代码示例 一、什么是WebSocket? WebSocket是一种网络协议,可以在实现了We

    2024年02月03日
    浏览(43)
  • java springboot 整合webSocket接入调用chatGPT3.5接口实现自由返回

    java springboot 中使用webSocket接入openAI接口调用chatGPT3.5接口实现自由返回 @Component @Anonymous @ServerEndpoint(“/websocket/{id}”) // 访问路径: ws://localhost:8080/websocket public class WebSocketServer { // try { // sendMessage(“WebSocket连接成功”); // } catch (Exception e) { // // } } /** * 发送消息 * @param message 要

    2024年02月14日
    浏览(59)
  • 如何使用SpringBoot和Netty实现一个WebSocket服务器,并配合Vue前端实现聊天功能?

    本文将详细介绍如何使用SpringBoot和Netty实现一个WebSocket服务器,并配合Vue前端实现聊天功能。 WebSocket是一种基于TCP的协议,它允许客户端和服务器之间进行双向通信,而不需要像HTTP那样进行请求和响应。Netty是一个Java网络编程框架,它提供了强大的异步事件驱动网络编程能

    2024年02月16日
    浏览(44)
  • 完整教程:Java+Vue+Websocket实现OSS文件上传进度条功能

    文件上传是Web应用开发中常见的需求之一,而实时显示文件上传的进度条可以提升用户体验。本教程将介绍如何使用Java后端和Vue前端实现文件上传进度条功能,借助阿里云的OSS服务进行文件上传。 后端:Java、Spring Boot 、WebSocket Server 前端:Vue、WebSocket Client 安装依赖 UploadF

    2024年02月05日
    浏览(117)
  • springboot整合websocket教程

    Websocket是一种网络协议,它允许浏览器和服务器之间进行实时双向数据传输。 在本教程中,我们将创建一个简单的聊天应用程序,使用Websocket实现实时通信。 添加依赖 我们需要添加Spring Boot Websocket依赖,以便我们可以使用Spring Boot中提供的Websocket支持。 配置WebSocket 在Sprin

    2023年04月23日
    浏览(45)
  • SpringBoot整合Websocket(Java websocket怎么使用)

    WebSocket 是一种基于 TCP 协议的全双工通信协议,可以在浏览器和服务器之间建立 实时、双向的数据通信 。可以用于在线聊天、在线游戏、实时数据展示等场景。与传统的 HTTP 协议不同,WebSocket 可以保持 长连接 ,实时传输数据,避免了频繁的 HTTP 请求和响应,节省了网络带

    2024年02月10日
    浏览(41)
  • SpringBoot整合WebSocket详细教程

    共开启两个页面,实现一对一聊天。 服务端代码:https://gitee.com/lianaozhe/springboot-websocket.git 导入相关依赖: WebSocketConfig配置类: WebSocket操作类: TestController测试接口类: test.html文件: 复制test.html文件为test2.html文件,将上面的userId由’20’改为’10’,后面测试使用。 运行服

    2024年02月01日
    浏览(47)
  • springboot整合websocket(详解、教程、代码)

    大家好,我是酷酷的韩~ 1.websocket定义 WebSocket协议是基于TCP的一种新的网络协议。它实现了浏览器与服务器全双工(full-duplex)通信——允许服务器主动发送信息给客户端。websocket 协议是在 http 协议上的一种补充协议,是 html5 的新特性,是一种持久化的协议。 2.websocket工作原理

    2024年02月02日
    浏览(61)
  • SpringBoot进阶教程(七十七)WebSocket

    WebSocket是一种在单个TCP连接上进行全双工通信的协议。WebSocket使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在WebSocket API中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。 很多

    2024年02月08日
    浏览(79)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包