国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

什么是 WebSocket?Java 中如何實現(xiàn) WebSocket?

這篇具有很好參考價值的文章主要介紹了什么是 WebSocket?Java 中如何實現(xiàn) WebSocket?。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

什么是 WebSocket?Java 中如何實現(xiàn) WebSocket?

WebSocket 簡介

WebSocket 是一種新型的網(wǎng)絡(luò)協(xié)議,它允許客戶端和服務(wù)器之間進行雙向通信,可以實現(xiàn)實時數(shù)據(jù)交互。WebSocket 協(xié)議是基于 HTTP 協(xié)議的,使用標準的 TCP 連接,可以在客戶端和服務(wù)器之間建立一條持久化的連接,而不需要像 HTTP 協(xié)議那樣每次請求都需要重新建立連接。

WebSocket 協(xié)議的優(yōu)點包括:

  • 實時性:WebSocket 協(xié)議可以在客戶端和服務(wù)器之間實現(xiàn)實時數(shù)據(jù)交互。
  • 性能:WebSocket 協(xié)議使用標準的 TCP 連接,可以在客戶端和服務(wù)器之間建立一條持久化的連接,不需要像 HTTP 協(xié)議那樣每次請求都需要重新建立連接。這可以提高網(wǎng)絡(luò)性能,并減少網(wǎng)絡(luò)帶寬的消耗。
  • 跨域支持:WebSocket 協(xié)議支持跨域請求,可以在不同的域名之間進行數(shù)據(jù)交互。
    什么是 WebSocket?Java 中如何實現(xiàn) WebSocket?,SpringBoot 教程,websocket,java,網(wǎng)絡(luò)協(xié)議

Java 中的 WebSocket 實現(xiàn)

Java 中的 WebSocket 實現(xiàn)主要是通過 JSR 356 規(guī)范來實現(xiàn)的,該規(guī)范定義了 Java 中的 WebSocket API,包括客戶端和服務(wù)端兩部分。

WebSocket 客戶端

Java 中的 WebSocket 客戶端可以通過 javax.websocket 包中的 Session 類來實現(xiàn)。以下是一個簡單的 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("連接關(guān)閉");
    }

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

上面的代碼實現(xiàn)了一個簡單的 WebSocket 客戶端,使用 @ClientEndpoint 注解來標識該類是一個 WebSocket 客戶端,使用 @OnOpen、@OnMessage@OnClose 注解來定義客戶端的行為??梢允褂?WebSocketContainer 類來創(chuàng)建一個 WebSocket 客戶端,并使用 Session 類來操作連接。

WebSocket 服務(wù)端

Java 中的 WebSocket 服務(wù)端可以通過 javax.websocket 包中的 Endpoint 類來實現(xiàn)。以下是一個簡單的 WebSocket 服務(wù)端示例代碼:

@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("連接關(guān)閉");
    }

    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("服務(wù)端啟動成功");
        Thread.currentThread().join();
    }
}

上面的代碼實現(xiàn)了一個簡單的 WebSocket 服務(wù)端,使用 @ServerEndpoint 注解來標識該類是一個 WebSocket 服務(wù)端,使用 @OnOpen、@OnMessage@OnClose 注解來定義服務(wù)端的行為??梢允褂?WebSocketServerContainer 類來創(chuàng)建一個 WebSocket 服務(wù)端,并使用 ServerEndpointConfig 類來配置服務(wù)端的連接。

WebSocket 實現(xiàn)示例

下面是一個完整的 WebSocket 實現(xiàn)示例,包括客戶端和服務(wù)端。該示例實現(xiàn)了一個簡單的聊天室,客戶端可以向服務(wù)端發(fā)送消息,并將消息廣播給所有在線用戶。

服務(wù)端```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();
}

}


上面的代碼實現(xiàn)了一個簡單的聊天室,使用 `@ServerEndpoint` 注解來標識該類是一個 WebSocket 服務(wù)端,使用 `@OnOpen`、`@OnMessage` 和 `@OnClose` 注解來定義服務(wù)端的行為。在 `onOpen` 方法中,將新用戶加入到 `sessions` 集合中,表示該用戶已經(jīng)加入聊天室。在 `onMessage` 方法中,將收到的消息廣播給所有在線用戶。在 `onClose` 方法中,將離開的用戶從 `sessions` 集合中移除,表示該用戶已經(jīng)離開聊天室。在 `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("連接關(guān)閉");
    }

    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);
        }
    }
}

上面的代碼實現(xiàn)了一個簡單的聊天室客戶端,使用 @ClientEndpoint 注解來標識該類是一個 WebSocket 客戶端,使用 @OnOpen、@OnMessage@OnClose 注解來定義客戶端的行為。在 onOpen 方法中,表示連接成功。在 onMessage 方法中,將收到的消息打印到控制臺。在 onClose 方法中,表示連接關(guān)閉。在 main 方法中,使用 WebSocketContainer 類來創(chuàng)建一個 WebSocket 客戶端,并使用 Session 類來操作連接。用戶需要輸入昵稱,并通過控制臺輸入消息發(fā)送給服務(wù)端。

總結(jié)

本文介紹了 WebSocket 協(xié)議的基本概念和 Java 中的 WebSocket 實現(xiàn)方式。通過示例代碼,演示了如何在 Java 中實現(xiàn)一個簡單的聊天室,包括服務(wù)端和客戶端。WebSocket 協(xié)議具有實時性、性能和跨域支持等優(yōu)勢,在實時數(shù)據(jù)交互的場景中得到廣泛應(yīng)用。文章來源地址http://www.zghlxwxcb.cn/news/detail-574133.html

到了這里,關(guān)于什么是 WebSocket?Java 中如何實現(xiàn) WebSocket?的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 【Java】SpringBoot快速整合WebSocket實現(xiàn)客戶端服務(wù)端相互推送信息

    【Java】SpringBoot快速整合WebSocket實現(xiàn)客戶端服務(wù)端相互推送信息

    目錄 什么是webSocket? webSocket可以用來做什么? WebSocket操作類 一:測試客戶端向服務(wù)端推送消息 1.啟動SpringBoot項目 2.打開網(wǎng)站 3.進行測試消息推送 4.后端進行查看測試結(jié)果 二:測試服務(wù)端向客戶端推送消息 1.接口代碼 2.使用postman進行調(diào)用 3.查看測試結(jié)果 ????????WebSocke

    2024年01月20日
    瀏覽(38)
  • 如何使用Java Websocket實現(xiàn)實時數(shù)據(jù)監(jiān)控功能?

    隨著互聯(lián)網(wǎng)應(yīng)用的不斷發(fā)展,實時數(shù)據(jù)監(jiān)控功能成為了許多應(yīng)用的必備功能之一。本文將介紹如何使用Java WebSocket實現(xiàn)實時數(shù)據(jù)監(jiān)控功能,并提供具體的代碼示例。 :Java WebSocket、實時數(shù)據(jù)監(jiān)控、代碼示例 一、什么是WebSocket? WebSocket是一種網(wǎng)絡(luò)協(xié)議,可以在實現(xiàn)了We

    2024年02月03日
    瀏覽(26)
  • java springboot 整合webSocket接入調(diào)用chatGPT3.5接口實現(xiàn)自由返回

    java springboot 中使用webSocket接入openAI接口調(diào)用chatGPT3.5接口實現(xiàn)自由返回 @Component @Anonymous @ServerEndpoint(“/websocket/{id}”) // 訪問路徑: ws://localhost:8080/websocket public class WebSocketServer { // try { // sendMessage(“WebSocket連接成功”); // } catch (Exception e) { // // } } /** * 發(fā)送消息 * @param message 要

    2024年02月14日
    瀏覽(18)
  • 如何使用SpringBoot和Netty實現(xiàn)一個WebSocket服務(wù)器,并配合Vue前端實現(xiàn)聊天功能?

    本文將詳細介紹如何使用SpringBoot和Netty實現(xiàn)一個WebSocket服務(wù)器,并配合Vue前端實現(xiàn)聊天功能。 WebSocket是一種基于TCP的協(xié)議,它允許客戶端和服務(wù)器之間進行雙向通信,而不需要像HTTP那樣進行請求和響應(yīng)。Netty是一個Java網(wǎng)絡(luò)編程框架,它提供了強大的異步事件驅(qū)動網(wǎng)絡(luò)編程能

    2024年02月16日
    瀏覽(26)
  • 完整教程:Java+Vue+Websocket實現(xiàn)OSS文件上傳進度條功能

    完整教程:Java+Vue+Websocket實現(xiàn)OSS文件上傳進度條功能

    文件上傳是Web應(yīng)用開發(fā)中常見的需求之一,而實時顯示文件上傳的進度條可以提升用戶體驗。本教程將介紹如何使用Java后端和Vue前端實現(xiàn)文件上傳進度條功能,借助阿里云的OSS服務(wù)進行文件上傳。 后端:Java、Spring Boot 、WebSocket Server 前端:Vue、WebSocket Client 安裝依賴 UploadF

    2024年02月05日
    瀏覽(52)
  • springboot整合websocket教程

    Websocket是一種網(wǎng)絡(luò)協(xié)議,它允許瀏覽器和服務(wù)器之間進行實時雙向數(shù)據(jù)傳輸。 在本教程中,我們將創(chuàng)建一個簡單的聊天應(yīng)用程序,使用Websocket實現(xiàn)實時通信。 添加依賴 我們需要添加Spring Boot Websocket依賴,以便我們可以使用Spring Boot中提供的Websocket支持。 配置WebSocket 在Sprin

    2023年04月23日
    瀏覽(19)
  • SpringBoot整合Websocket(Java websocket怎么使用)

    SpringBoot整合Websocket(Java websocket怎么使用)

    WebSocket 是一種基于 TCP 協(xié)議的全雙工通信協(xié)議,可以在瀏覽器和服務(wù)器之間建立 實時、雙向的數(shù)據(jù)通信 ??梢杂糜谠诰€聊天、在線游戲、實時數(shù)據(jù)展示等場景。與傳統(tǒng)的 HTTP 協(xié)議不同,WebSocket 可以保持 長連接 ,實時傳輸數(shù)據(jù),避免了頻繁的 HTTP 請求和響應(yīng),節(jié)省了網(wǎng)絡(luò)帶

    2024年02月10日
    瀏覽(20)
  • SpringBoot整合WebSocket詳細教程

    SpringBoot整合WebSocket詳細教程

    共開啟兩個頁面,實現(xiàn)一對一聊天。 服務(wù)端代碼:https://gitee.com/lianaozhe/springboot-websocket.git 導(dǎo)入相關(guān)依賴: WebSocketConfig配置類: WebSocket操作類: TestController測試接口類: test.html文件: 復(fù)制test.html文件為test2.html文件,將上面的userId由’20’改為’10’,后面測試使用。 運行服

    2024年02月01日
    瀏覽(21)
  • springboot整合websocket(詳解、教程、代碼)

    springboot整合websocket(詳解、教程、代碼)

    大家好,我是酷酷的韓~ 1.websocket定義 WebSocket協(xié)議是基于TCP的一種新的網(wǎng)絡(luò)協(xié)議。它實現(xiàn)了瀏覽器與服務(wù)器全雙工(full-duplex)通信——允許服務(wù)器主動發(fā)送信息給客戶端。websocket 協(xié)議是在 http 協(xié)議上的一種補充協(xié)議,是 html5 的新特性,是一種持久化的協(xié)議。 2.websocket工作原理

    2024年02月02日
    瀏覽(21)
  • SpringBoot進階教程(七十七)WebSocket

    SpringBoot進階教程(七十七)WebSocket

    WebSocket是一種在單個TCP連接上進行全雙工通信的協(xié)議。WebSocket使得客戶端和服務(wù)器之間的數(shù)據(jù)交換變得更加簡單,允許服務(wù)端主動向客戶端推送數(shù)據(jù)。在WebSocket API中,瀏覽器和服務(wù)器只需要完成一次握手,兩者之間就直接可以創(chuàng)建持久性的連接,并進行雙向數(shù)據(jù)傳輸。 很多

    2024年02月08日
    瀏覽(296)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包