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

Java連接WebSocket的實(shí)現(xiàn)教程

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

Java 連接 WebSocket 入門教程

1. WebSocket 簡(jiǎn)介

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

2. Java WebSocket 依賴

在 Java 中,我們可以使用 javax.websocketSpring WebSocket 來(lái)實(shí)現(xiàn) WebSocket 連接。

2.1 添加 Maven 依賴

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

3. Java WebSocket 服務(wù)器端實(shí)現(xiàn)

3.1 使用 Java EE 實(shí)現(xiàn) WebSocket 服務(wù)器

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("服務(wù)器響應(yīng): " + message);
        }
    }
    
    @OnClose
    public void onClose(Session session) {
        sessions.remove(session);
        System.out.println("連接關(guān)閉: " + session.getId());
    }
    
    @OnError
    public void onError(Session session, Throwable error) {
        error.printStackTrace();
    }
}

3.2 配置 WebSocket 服務(wù)器

如果使用的是 Spring Boot,需要?jiǎng)?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 客戶端實(shí)現(xiàn)

使用 java.net.http.WebSocket 進(jìn)行客戶端連接:

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. 測(cè)試 WebSocket 連接

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

總結(jié)

通過(guò)本文,你學(xué)習(xí)了如何使用 Java 連接 WebSocket,包括服務(wù)器端和客戶端的實(shí)現(xiàn)。

WebSocket 適用于實(shí)時(shí)通信場(chǎng)景,如聊天應(yīng)用、數(shù)據(jù)推送等,提高了網(wǎng)絡(luò)通信的效率和交互體驗(yàn)。

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 詳解Java實(shí)現(xiàn)批量壓縮圖片裁剪壓縮多種尺寸縮略圖一鍵批量上傳圖片

    詳解Java實(shí)現(xiàn)批量壓縮圖片裁剪壓縮多種尺寸縮略圖一鍵批量上傳圖片

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

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

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

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

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

    在springboot中如何集成clickhouse進(jìn)行讀寫(xiě)操作

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

    java 設(shè)計(jì)模式之單例模式

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

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

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

    SpringBoot壓縮png, jpg, jpeg, webp類型圖片的實(shí)現(xiàn)代碼

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

    深入理解窗口令牌WindowToken

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

    如何在Java中使用正則表達(dá)式API

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

    java打印正弦曲線示例

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

最新評(píng)論

奉节县| 焉耆| 盐池县| 沁水县| 垣曲县| 黄梅县| 雅江县| 武安市| 丰台区| 博爱县| 衡阳市| 恩平市| 井研县| 桃园县| 曲麻莱县| 萍乡市| 湖南省| 北安市| 阳东县| 敦化市| 芜湖县| 肇州县| 阜南县| 涞水县| 陕西省| 昂仁县| 揭东县| 金山区| 平山县| 水城县| 广宗县| 方城县| 辽源市| 合作市| 扎囊县| 新田县| 沛县| 剑河县| 巨野县| 天祝| 城口县|