欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

Java 連接 WebSocket 入門教程

1. WebSocket 簡介

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

2. Java WebSocket 依賴

在 Java 中,我們可以使用 javax.websocketSpring WebSocket 來實現(xiàn) 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 服務器端實現(xiàn)

3.1 使用 Java EE 實現(xiàn) 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 客戶端實現(xiàn)

使用 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,包括服務器端和客戶端的實現(xiàn)。

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

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

相關文章

  • 使用Spring AOP監(jiān)控指定方法執(zhí)行時間的代碼詳解

    使用Spring AOP監(jiān)控指定方法執(zhí)行時間的代碼詳解

    這篇文章主要介紹了使用Spring AOP監(jiān)控指定方法執(zhí)行時間,文中通過代碼示例給大家介紹的非常詳細,對大家的學習或工作有一定的幫助,需要的朋友可以參考下
    2024-08-08
  • java如何消除太多的if else判斷示例代碼

    java如何消除太多的if else判斷示例代碼

    這篇文章主要介紹了java如何消除太多的if else判斷,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-05-05
  • Java深入探究Object類的方法

    Java深入探究Object類的方法

    java繼承中說到的Object類是java中一個特殊的類,所有的類都是直接或者間接的繼承自Object類,即如果某個類沒有使用extends關鍵字則默認是java.lang.Object類的子類,所以所有的類都可以使用Object類中定義的方法,下面介紹Object類的常用方法
    2022-05-05
  • Java編程cas操作全面解析

    Java編程cas操作全面解析

    這篇文章通過實例,解析了Java編程中cas操作的概念、原理以及用法,具有一定參考價值,需要的朋友可以了解下。
    2017-09-09
  • 簡單實現(xiàn)Java版學生管理系統(tǒng)

    簡單實現(xiàn)Java版學生管理系統(tǒng)

    這篇文章主要為大家詳細介紹了簡單實現(xiàn)Java版學生管理系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-06-06
  • Springboot中@Value失效問題

    Springboot中@Value失效問題

    這篇文章主要介紹了Springboot中@Value失效問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-11-11
  • Java Collections集合繼承結構圖_動力節(jié)點Java學院整理

    Java Collections集合繼承結構圖_動力節(jié)點Java學院整理

    這篇文章主要介紹了Java Collections集合繼承結構圖_動力節(jié)點Java學院整理,需要的朋友可以參考下
    2017-04-04
  • springboot請求找不到路徑異常的問題

    springboot請求找不到路徑異常的問題

    這篇文章主要介紹了springboot請求找不到路徑異常的問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • springboot項目連接不上nacos配置,報‘url‘異常問題

    springboot項目連接不上nacos配置,報‘url‘異常問題

    這篇文章主要介紹了springboot項目連接不上nacos配置,報‘url‘異常問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • java實體類轉(zhuǎn)成map的實現(xiàn)

    java實體類轉(zhuǎn)成map的實現(xiàn)

    這篇文章主要介紹了java實體類轉(zhuǎn)成map的實現(xiàn)方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-06-06

最新評論