最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java連接WebSocket的實現教程

 更新時間:2025年04月23日 08:35:38   作者:zru_9602  
這篇文章主要介紹了Java連接WebSocket的實現教程,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

Java 連接 WebSocket 入門教程

1. WebSocket 簡介

WebSocket 是一種全雙工通信協議,它允許客戶端和服務器之間建立持久連接,實現低延遲、實時交互。相比于傳統的 HTTP 輪詢,WebSocket 具有更高的效率和更低的帶寬消耗。

2. Java WebSocket 依賴

在 Java 中,我們可以使用 javax.websocketSpring WebSocket 來實現 WebSocket 連接。

2.1 添加 Maven 依賴

  • 對于 Java EE WebSocket:
<dependency>
    <groupId>javax.websocket</groupId>
    <artifactId>javax.websocket-api</artifactId>
    <version>1.1</version>
</dependency>
  • 對于 Spring WebSocket:
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-websocket</artifactId>
</dependency>

3. Java WebSocket 服務器端實現

3.1 使用 Java EE 實現 WebSocket 服務器

import javax.websocket.*;
import javax.websocket.server.ServerEndpoint;
import java.io.IOException;
import java.util.concurrent.CopyOnWriteArraySet;

@ServerEndpoint("/websocket")
public class WebSocketServer {
    private static final CopyOnWriteArraySet<Session> sessions = new CopyOnWriteArraySet<>();
    
    @OnOpen
    public void onOpen(Session session) {
        sessions.add(session);
        System.out.println("新連接建立: " + session.getId());
    }
    
    @OnMessage
    public void onMessage(String message, Session session) throws IOException {
        System.out.println("收到消息: " + message);
        for (Session s : sessions) {
            s.getBasicRemote().sendText("服務器響應: " + message);
        }
    }
    
    @OnClose
    public void onClose(Session session) {
        sessions.remove(session);
        System.out.println("連接關閉: " + session.getId());
    }
    
    @OnError
    public void onError(Session session, Throwable error) {
        error.printStackTrace();
    }
}

3.2 配置 WebSocket 服務器

如果使用的是 Spring Boot,需要創(chuàng)建 WebSocket 配置類:

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

4. Java WebSocket 客戶端實現

使用 java.net.http.WebSocket 進行客戶端連接:

import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.WebSocket;
import java.util.concurrent.CompletionStage;

public class WebSocketClient {
    public static void main(String[] args) {
        HttpClient client = HttpClient.newHttpClient();
        WebSocket webSocket = client.newWebSocketBuilder()
            .buildAsync(URI.create("ws://localhost:8080/websocket"), new WebSocketListener())
            .join();
        webSocket.sendText("Hello WebSocket!", true);
    }
}

class WebSocketListener implements WebSocket.Listener {
    @Override
    public void onOpen(WebSocket webSocket) {
        System.out.println("WebSocket 連接成功");
        webSocket.request(1);
    }

    @Override
    public CompletionStage<?> onText(WebSocket webSocket, CharSequence data, boolean last) {
        System.out.println("收到消息: " + data);
        webSocket.request(1);
        return null;
    }
}

5. 測試 WebSocket 連接

  1. 啟動 Java WebSocket 服務器。
  2. 運行 WebSocket 客戶端,檢查是否成功連接并發(fā)送/接收消息。
  3. 也可以使用 WebSocket 在線測試工具(如 websocket.org)進行測試。

總結

通過本文,你學習了如何使用 Java 連接 WebSocket,包括服務器端和客戶端的實現。

WebSocket 適用于實時通信場景,如聊天應用、數據推送等,提高了網絡通信的效率和交互體驗。

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • 詳解Java實現批量壓縮圖片裁剪壓縮多種尺寸縮略圖一鍵批量上傳圖片

    詳解Java實現批量壓縮圖片裁剪壓縮多種尺寸縮略圖一鍵批量上傳圖片

    這篇文章主要介紹了Java實現批量壓縮圖片裁剪壓縮多種尺寸縮略圖一鍵批量上傳圖片,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-03-03
  • mybatis創(chuàng)建項目報Invalid?bound?statement?(not?found)錯誤解決方法

    mybatis創(chuàng)建項目報Invalid?bound?statement?(not?found)錯誤解決方法

    使用MyBatis能夠幫助我們將SQL語句和Java代碼分離,這篇文章主要給大家介紹了關于mybatis創(chuàng)建項目報Invalid?bound?statement?(not?found)錯誤的解決方法,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2023-05-05
  • Maven 主模塊和子模塊pom.xml依賴聲明

    Maven 主模塊和子模塊pom.xml依賴聲明

    這篇文章主要介紹了Maven 主模塊和子模塊pom.xml依賴聲明,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-10-10
  • 在springboot中如何集成clickhouse進行讀寫操作

    在springboot中如何集成clickhouse進行讀寫操作

    本文介紹了在Spring Boot中集成ClickHouse的步驟,包括引入依賴、配置數據源、編寫實體類和Mapper類進行CRUD操作,特別提到批量插入時需要在SQL語句中添加`FORMAT`以避免錯誤,在實際應用中,與MySQL的操作類似,只需將ClickHouse當作MySQL使用
    2024-11-11
  • java  設計模式之單例模式

    java 設計模式之單例模式

    這篇文章主要介紹了java 設計模式之單例模式的相關資料,需要的朋友可以參考下
    2017-02-02
  • Java實現將Markdown文檔轉換為Word與PDF的實戰(zhàn)指南

    Java實現將Markdown文檔轉換為Word與PDF的實戰(zhàn)指南

    這篇文章主要為大家詳細介紹了Java如何利用 Spire.Doc for Java實現將Markdown文檔轉換為Word與PDF,文中的示例代碼講解詳細,感興趣的小伙伴可以了解下
    2026-04-04
  • SpringBoot壓縮png, jpg, jpeg, webp類型圖片的實現代碼

    SpringBoot壓縮png, jpg, jpeg, webp類型圖片的實現代碼

    這篇文章主要介紹了SpringBoot壓縮png, jpg, jpeg, webp類型圖片的實現,文中通過代碼示例和圖文結合的方式給大家講解的非常詳細,對大家的學習或工作有一定的幫助,需要的朋友可以參考下
    2024-08-08
  • 深入理解窗口令牌WindowToken

    深入理解窗口令牌WindowToken

    這篇文章主要介紹了窗口令牌WindowToken的概念與作用,它是對應用組件的行為進行規(guī)范管理的一個手段。WindowToken由應用組件或其管理者負責向WMS聲明并持有
    2021-08-08
  • 如何在Java中使用正則表達式API

    如何在Java中使用正則表達式API

    這篇文章主要介紹了如何在Java中使用正則表達式API,我們將討論java正則表達式API,以及如何在Java編程語言中使用正則表達式。具體詳細介紹,需要的小伙伴可以參考下面文章內容
    2022-06-06
  • java打印正弦曲線示例

    java打印正弦曲線示例

    這篇文章主要介紹了java數組排序示例,需要的朋友可以參考下
    2014-03-03

最新評論

乐平市| 舒城县| 开化县| 上高县| 武夷山市| 景东| 伊春市| 翁源县| 江安县| 清徐县| 鸡西市| 屯留县| 盖州市| 儋州市| 贺州市| 泾阳县| 西城区| 山丹县| 沿河| 那曲县| 曲沃县| 柏乡县| 迁安市| 长武县| 石台县| 两当县| 子长县| 阆中市| 上虞市| 盘锦市| 青川县| 凌海市| 潼南县| 溧水县| 治县。| 鹤岗市| 蕲春县| 苍南县| 温泉县| 平阴县| 资源县|