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

Java Server-Sent Events通信

這篇具有很好參考價值的文章主要介紹了Java Server-Sent Events通信。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

Server-Sent Events特點與優(yōu)勢

后端可以向前端發(fā)送信息,類似于websocket,但是websocket是雙向通信,但是sse為單向通信,服務(wù)器只能向客戶端發(fā)送文本信息,效率比websocket高。

單向通信:SSE只支持服務(wù)器到客戶端的單向通信。這對于那些只需要服務(wù)器推送數(shù)據(jù)而無需客戶端響應(yīng)的場景非常有效,例如實時新聞、股票報價更新等。

簡單輕量:SSE在實現(xiàn)上通常比WebSocket更簡單和輕量,因為它是基于標(biāo)準(zhǔn)的HTTP協(xié)議實現(xiàn)的。

自動重連:SSE支持自動重連機制,如果連接斷開,瀏覽器會嘗試重新建立連接。

易于使用和兼容性:對于簡單的單向數(shù)據(jù)流,SSE更容易實現(xiàn),且兼容性較好。

后端代碼?

stream() 方法返回的 SseEmitter 對象用于建立一個 SSE (Server-Sent Events) 連接,但它本身并不負(fù)責(zé)推送數(shù)據(jù)。這個方法的主要作用是:

建立連接:當(dāng)客戶端請求 /notification 路徑時,stream() 方法被調(diào)用,創(chuàng)建并返回一個 SseEmitter 實例。這個實例代表了與客戶端之間的一個長連接。

保持連接開啟:這個連接將保持開啟狀態(tài),直到服務(wù)器發(fā)送完成信號或連接超時。這允許服務(wù)器在后續(xù)任何時間點向客戶端推送數(shù)據(jù)。

等待數(shù)據(jù)推送:雖然 stream() 方法創(chuàng)建了連接,但實際的數(shù)據(jù)推送是由其他部分的代碼來處理的。通常,這涉及到在服務(wù)層或控制器的其他部分設(shè)置邏輯,以在某些事件發(fā)生時調(diào)用 SseEmitter 的 send() 方法來推送數(shù)據(jù)。

連接默認(rèn)超時時間為三十分鐘,這是設(shè)置為1天。

@RestController
@RequestMapping("/admin/homePage")
public class NotificationSSEController {

    // executorService: 一個線程池,用于管理和執(zhí)行后臺任務(wù)。
    private final ExecutorService executorService = Executors.newCachedThreadPool();

    // emitter: 用于SSE(服務(wù)器發(fā)送事件)的SseEmitter實例。這個對象用來向客戶端發(fā)送實時更新。
    // SseEmitter是Spring框架提供的一個類,用于處理HTTP連接以發(fā)送SSE。
    // 1天 = 24小時 * 60分鐘 * 60秒 * 1000毫秒
    private SseEmitter emitter = new SseEmitter(24L * 60 * 60 * 1000);

    /**
     * 返回的是sse連接,不參與返回數(shù)據(jù)
     * @return
     */
    @CrossOrigin
    @GetMapping(value = "/notification", produces = MediaType.TEXT_EVENT_STREAM_VALUE)
    public SseEmitter stream() {
        sendNotification(); // 當(dāng)客戶端連接時立即發(fā)送通知
        return emitter;
    }

    // A函數(shù):Spring Boot定時函數(shù),每10秒執(zhí)行一次
    @Scheduled(fixedRate = 1000)
    public void scheduledTask() {
        sendNotification();
    }

    // B函數(shù):負(fù)責(zé)SSE發(fā)送
    public void sendNotification() {
        executorService.execute(() -> {
            try {
                NotificationSSE notificationSSE = new NotificationSSE();
                emitter.send(SseEmitter.event()
                        .id(String.valueOf(System.currentTimeMillis()))
                        .data(JSONObject.toJSONString(notificationSSE)));
            } catch (Exception e) {
                emitter.completeWithError(e);
            }
        });
    }
}

前端代碼?

<!DOCTYPE html>
<html>
<head>
    <title>SSE Example</title>
</head>
<body>
<script>
    var eventSource = new EventSource("http://localhost/admin/homePage/notification");
    eventSource.onmessage = function(event) {
        console.log(event.data);
    };
</script>
</body>
</html>

Java Server-Sent Events通信,javaWeb,java,sse文章來源地址http://www.zghlxwxcb.cn/news/detail-817620.html

到了這里,關(guān)于Java Server-Sent Events通信的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • Server-Sent Events(SSE) 入門、原理、介紹、類ChatGpt流式輸出實現(xiàn)

    一、引言 在現(xiàn)代Web應(yīng)用程序中,實時數(shù)據(jù)傳輸和實時通信變得越來越重要。為了實現(xiàn)這種實時通信,多種技術(shù)應(yīng)運而生,如WebSocket、長輪詢和Server-Sent Events(SSE)。在本文中,我們將重點探討Server-Sent Events,一種基于HTTP的實時通信協(xié)議。 二、技術(shù)背景 Server-Sent Events(SSE)它

    2024年02月08日
    瀏覽(35)
  • SSE[Server-Sent Events]實現(xiàn)頁面流式數(shù)據(jù)輸出(模擬ChatGPT流式輸出)

    SSE[Server-Sent Events]實現(xiàn)頁面流式數(shù)據(jù)輸出(模擬ChatGPT流式輸出)

    ????????服務(wù)端向客戶端推送消息,除了用WebSocket可實現(xiàn),還有一種服務(wù)器發(fā)送事件(Server-Sent Events)簡稱 SSE,這是一種服務(wù)器端到客戶端(瀏覽器)的單向消息推送。ChatGPT 就是采用的 SSE。對于需要長時間等待響應(yīng)的對話場景,ChatGPT 采用了一種巧妙的策略:它會將已經(jīng)計算

    2024年01月22日
    瀏覽(29)
  • Spring Boot中使用Server-Sent Events (SSE) 實現(xiàn)實時數(shù)據(jù)推送教程

    Server-Sent Events (SSE) 是HTML5引入的一種輕量級的服務(wù)器向瀏覽器客戶端單向推送實時數(shù)據(jù)的技術(shù)。在Spring Boot框架中,我們可以很容易地集成并利用SSE來實現(xiàn)實時通信。 ???????? 在Spring Boot項目中,無需額外引入特定的依賴,因為Spring Web MVC模塊已經(jīng)內(nèi)置了對SSE的支持。 輔助

    2024年03月18日
    瀏覽(31)
  • html5學(xué)習(xí)筆記19-SSE服務(wù)器發(fā)送事件(Server-Sent Events)

    https://www.runoob.com/html/html5-serversentevents.html 允許網(wǎng)頁獲得來自服務(wù)器的更新。類似設(shè)置回調(diào)函數(shù)。 demo_sse.php demo_sse.aspx

    2024年02月09日
    瀏覽(59)
  • Server-Sent Events(以下簡稱 SSE)及event-source-polyfill使用單向長連接(后臺主動向前端推送)

    Server-Sent Events(以下簡稱 SSE)及event-source-polyfill使用單向長連接(后臺主動向前端推送)

    SSE 與 WebSocket 作用相似,都是建立瀏覽器與服務(wù)器之間的通信渠道,然后服務(wù)器向瀏覽器推送信息SSE 是單向通道,只能服務(wù)器向瀏覽器發(fā)送,因為流信息本質(zhì)上就是下載。如果瀏覽器向服務(wù)器發(fā)送信息,就變成了另一次 HTTP 請求 使用方法? Server-Sent Events 教程 - 阮一峰的網(wǎng)絡(luò)

    2024年02月12日
    瀏覽(30)
  • Go 中的Server-Sent Events:一種高效的實時通信替代方案

    在當(dāng)今的軟件工程領(lǐng)域,實時通信在許多現(xiàn)代應(yīng)用程序中發(fā)揮著至關(guān)重要的作用。Server-Sent Events (SSE) 是該領(lǐng)域廣受歡迎的一項技術(shù)。 在本文中,我們將探討Server-Sent Events 是什么,將它們的功能與 WebSocket 進行比較,提供 Go 和 JavaScript 代碼示例,討論使用服務(wù)器發(fā)送事件的優(yōu)

    2024年02月11日
    瀏覽(24)
  • 介紹Server-Sent Events,以及使用,超級簡單!

    介紹Server-Sent Events,以及使用,超級簡單!

    嚴(yán)格地說,HTTP 協(xié)議無法做到服務(wù)器主動推送信息。但是,有一種變通方法,就是服務(wù)器向客戶端聲明,接下來要發(fā)送的是流信息(streaming)。 也就是說,發(fā)送的不是一次性的數(shù)據(jù)包,而是一個數(shù)據(jù)流,會連續(xù)不斷地發(fā)送過來。這時,客戶端不會關(guān)閉連接,會一直等著服務(wù)器

    2024年02月11日
    瀏覽(17)
  • 結(jié)合Server-sent events與 EventSource使用,實現(xiàn)服務(wù)端主動向客戶端發(fā)送數(shù)據(jù)

    結(jié)合Server-sent events與 EventSource使用,實現(xiàn)服務(wù)端主動向客戶端發(fā)送數(shù)據(jù)

    當(dāng)前解決服務(wù)端推送的方案有這幾個: 客戶端長輪詢(不推薦使用) websocket雙向連接 iframe永久幀(不推薦使用) EventSource 長輪訓(xùn)雖然可以避免短輪訓(xùn)造成的服務(wù)端過載,但在服務(wù)端返回數(shù)據(jù)后仍需要客戶端主動發(fā)起下一個長輪訓(xùn)請求,等待服務(wù)端響應(yīng),這樣仍需要底層的連

    2024年02月04日
    瀏覽(18)
  • 淺談PHP結(jié)合JavaScript SSE(Server Sent Events)實現(xiàn)服務(wù)器實時推送功能

    如配置后Nginx遇到502/504的,請參考這兩篇文章的解決方案 PHP-FPM與Nginx通信報 502 Bad Gateway或504 Gateway Timeout終極解決方案(適用于PHP執(zhí)行耗時任務(wù)情況下的報錯) Linux系統(tǒng)下配置Nginx使部分URL使用多套自定義的PHP-FPM配置 SSE 的全稱是 Server Sent Events,即服務(wù)器推送事件。它是一種

    2024年02月08日
    瀏覽(27)
  • Spring Boot 整合 SSE(Server Sent Event)

    服務(wù)器發(fā)送事件(Server-Sent Events),簡稱 SSE。這是一種服務(wù)器端到客戶端的單向消息推送。SSE 基于 HTTP 協(xié)議的,SSE 在服務(wù)器和客戶端之間打開一個單向通道,服務(wù)端響應(yīng)的不再是一次性的數(shù)據(jù)包而是text/event-stream類型的數(shù)據(jù)流信息 后端代碼: 細(xì)節(jié): 創(chuàng)建SseEmitter 對象時需要返

    2024年02月16日
    瀏覽(23)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包