Java WebSocket

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

Java WebSocket

WebSocket 是一种基于 TCP 协议的全双工通信协议,可以实现客户端和服务器之间的实时通信。在 Java 中,我们可以使用 Java API for WebSocket(JSR 356)来实现 WebSocket。

WebSocket API

Java API for WebSocket 提供了一组 API,用于实现 WebSocket。以下是 WebSocket API 中的一些重要类和接口:

  • javax.websocket.Endpoint:WebSocket 端点,用于处理 WebSocket 连接的生命周期。
  • javax.websocket.Session:WebSocket 会话,表示客户端和服务器之间的一次连接。
  • javax.websocket.MessageHandler:WebSocket 消息处理器,用于处理客户端发送的消息。
  • javax.websocket.server.ServerEndpoint:WebSocket 服务器端点,用于将 WebSocket 端点暴露为一个 URI。

实现 WebSocket 服务器

要实现 WebSocket 服务器,我们需要创建一个类,继承自 javax.websocket.Endpoint 类,并实现它的 onOpenonCloseonErroronMessage 方法,分别用于处理 WebSocket 连接的打开、关闭、错误和消息。

以下是一个简单的 WebSocket 服务器的示例代码:

import java.io.IOException;
import javax.websocket.Endpoint;
import javax.websocket.EndpointConfig;
import javax.websocket.MessageHandler;
import javax.websocket.Session;
import javax.websocket.server.ServerEndpoint;

@ServerEndpoint("/websocket")
public class WebSocketServer extends Endpoint {

    @Override
    public void onOpen(Session session, EndpointConfig config) {
        System.out.println("WebSocket connection opened: " + session.getId());

        session.addMessageHandler(new MessageHandler.Whole<String>() {
            @Override
            public void onMessage(String message) {
                System.out.println("Received message: " + message);

                try {
                    session.getBasicRemote().sendText("Server received message: " + message);
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        });
    }

    @Override
    public void onClose(Session session, CloseReason closeReason) {
        System.out.println("WebSocket connection closed: " + session.getId() + " Reason: " + closeReason.getReasonPhrase());
    }

    @Override
    public void onError(Session session, Throwable throwable) {
        System.err.println("WebSocket error occurred: " + session.getId());
        throwable.printStackTrace();
    }

    @Override
    public void onMessage(Session session, String message) {
        System.out.println("Received message: " + message);

        try {
            session.getBasicRemote().sendText("Server received message: " + message);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

在上面的示例中,我们创建了一个 WebSocketServer 类,并使用 @ServerEndpoint("/websocket") 注解将它暴露为 /websocket URI。在 onOpen 方法中,我们打印出 WebSocket 连接的 ID,并添加一个消息处理器,用于处理客户端发送的消息。在 onCloseonError 方法中,我们分别打印出 WebSocket 连接关闭和错误的信息。在 onMessage 方法中,我们打印出接收到的消息,并向客户端发送一个响应消息。

实现 WebSocket 客户端

要实现 WebSocket 客户端,我们可以使用 Java API for WebSocket 提供的 javax.websocket.ContainerProvider 类,通过它的 getWebSocketContainer 方法获取一个 javax.websocket.WebSocketContainer 对象,然后使用它的 connectToServer 方法连接 WebSocket 服务器。

以下是一个简单的 WebSocket 客户端的示例代码:

import java.net.URI;
import javax.websocket.ClientEndpoint;
import javax.websocket.OnMessage;
import javax.websocket.Session;
import javax.websocket.WebSocketContainer;
import javax.websocket.ContainerProvider;

@ClientEndpoint
public class WebSocketClient {

    @OnMessage
    public void onMessage(String message) {
        System.out.println("Received message: " + message);
    }

    public static void main(String[] args) throws Exception {
        WebSocketContainer container = ContainerProvider.getWebSocketContainer();
        URI uri = new URI("ws://localhost:8080/websocket");

        try (Session session = container.connectToServer(WebSocketClient.class, uri)) {
            session.getBasicRemote().sendText("Hello, server!");
        }
    }
}

在上面的示例中,我们创建了一个 WebSocketClient 类,并使用 @ClientEndpoint 注解将它标记为 WebSocket 客户端。在 onMessage 方法中,我们打印出接收到的消息。在 main 方法中,我们使用 ContainerProvider 类获取一个 WebSocketContainer 对象,并使用它的 connectToServer 方法连接 WebSocket 服务器。在连接成功后,我们向服务器发送一个消息。文章来源地址https://www.toymoban.com/news/detail-492725.html

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

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

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

相关文章

  • 全双工通信协议:WebSockets+STOMP

    WebSocket 协议定义了两种类型的消息(文本和二进制),但是它们的内容是未定义的。 STOMP (Streaming Text Oriented Messaging Protocol)是一种简单的、基于文本的消息传递协议,提供了一组命令和消息格式,用于在客户端和服务端之间发送和接收消息。客户端可以通过连接到消息代理(

    2024年02月20日
    浏览(44)
  • IIC协议——同步半双工串行通信方式

    2023.4.22 IIC : Inter-Integrated Circuit ,集成电路总线 半双工协议 多主设备,多从设备。通过地址索引,I2C可以使能所需从设备 实现不同集成电路组件之间的控制功能 接口减少,控制简单,只需要两条总线 通信速率高 多主控,但任意时刻只有一个主控有效。最大主设备——无限

    2023年04月23日
    浏览(43)
  • STM32F103单片机通过SPI全双工通信协议与W25Q64(FLASH)进行通信【串行同步通信(数据线与时钟线配合),(一主多从模式)】附相关驱动代码详解

    1.W25Qxx系列是一种低成本、小型化、使用简单的 非易失性存储器 ,常应用于数据存储、字库存储、固件程序存储等场景 2.存储介质: Nor Flash(闪存) 3.时钟频率:80MHz / 160MHz (Dual SPI) / 320MHz (Quad SPI) 4.存储容量(24位地址): W25Q40: 4Mbit / 512KByte W25Q80: 8Mbit / 1MByte W25Q16: 16

    2024年04月13日
    浏览(61)
  • 【Java】--网络编程:基于TCP协议的网络通信

    TCP协议(Transmission Control Protocol),即传输控制协议,是一种 面向连接 的, 可靠 的,基于 字节流 的传输层通信协议。数据大小无限制。 建立连接的过程需要 三次握手 。 断开连接的过程需要 四次挥手 。 使用TCP协议的通信双方分别为 客户端 和 服务器端 。 客户端负责向服务

    2024年01月23日
    浏览(61)
  • 【LabVIEW学习】5.数据通信之TCP协议,控制电脑的一种方式

    一。tcp连接以及写数据(登录)          数据通信--》协议--》TCP 注意: 事件结构要写延迟!!! 1.tcp连接         创建while循环,中间加入事件结构,创建tcp连接,写入IP地址与端口号 2.写入tcp数据         登录服务器除了要知道IP地址以及端口以外,需要用户名与密

    2024年02月04日
    浏览(42)
  • Go语言github.com/gorilla/websocket框架websocket协议通信实战

          websocket是实际开发中比较常用的应用层协议,本文利用github.com/gorilla/websocket框架进行websocket通信实战。 目录 1.下载github.com/gorilla/websocket 2.websocket服务端 3.websocket Go客户端 4.websocket 网页客户端 5.运行结果展示 go get github.com/gorilla/websocket 服务器:  Go语言客户端:  We

    2024年02月16日
    浏览(49)
  • 持久双向通信网络协议-WebSocket-入门案例实现demo

    1 介绍 WebSocket 是基于 TCP 的一种新的 网络协议 。它实现了浏览器与服务器全双工通信——浏览器和服务器只需要完成一次握手,两者之间就可以创建 持久性 的连接, 并进行 双向 数据传输。 HTTP协议和WebSocket协议对比: HTTP是 短连接 (一次响应完即消除) WebSocket是 长连接

    2024年01月16日
    浏览(47)
  • WebSocket ACK 协议解析:最大限度提高通信可靠性

    WebSocket ,作为一种在单一TCP连接上实现全双工通讯的协议,允许客户端与服务器之间自由地进行双向数据流动。一旦建立连接,数据可以无限制地在两者之间传输。但是,由于网络环境不总是完美无缺,讯息有时可能会在传递过程中丢失。这可能是因为网络拥堵、硬件故障或

    2024年01月19日
    浏览(52)
  • 网络通信协议-HTTP、WebSocket、MQTT的比较与应用

    在今天的数字化世界中,各种通信协议起着关键的作用,以确保信息的传递和交换。HTTP、WebSocket 和 MQTT 是三种常用的网络通信协议,它们各自适用于不同的应用场景。本文将比较这三种协议,并探讨它们的主要应用领域。 HTTP (超文本传输协议) HTTP  是最常见的协议之一

    2024年02月05日
    浏览(61)
  • ASP.NET Core 中使用 WebSocket 协议进行实时通信

    介绍 在 ASP.NET Core 中使用 WebSocket 协议创建实时通信的完整示例涉及几个步骤。在此示例中,我们将创建一个简单的聊天应用程序,用户可以在其中实时发送和接收消息。此示例假设您对 ASP.NET Core 和 C# 有基本了解。 步骤1.创建一个新的ASP.NET Core项目 首先,使用 Visual Studio 或

    2024年01月25日
    浏览(51)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包