中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么實現spring mvc SSE服務端發送事件

發布時間:2021-11-16 17:47:14 來源:億速云 閱讀:194 作者:iii 欄目:大數據

這篇文章主要講解了“怎么實現spring mvc SSE服務端發送事件”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“怎么實現spring mvc SSE服務端發送事件”吧!

需要新式瀏覽器支持

服務端:

package com.example.demo.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.time.LocalDateTime;

import static java.util.concurrent.TimeUnit.SECONDS;

@RestController
public class SSEController {

    /**
     * 每5秒向瀏覽器發送消息
     * 媒體類型必須為:text/event-stream
     * 輸出的格式:
     * <pre>
     * :這是注釋 單獨一個冒號,代表服務器推送的一個注釋。(這個可解決http中的324,發送心跳包)
     * id:11 代表數據標識符,客戶端接收到消息后,會把這個 ID 作為內部屬性 Last-Event-ID,在斷開重連 成功后,會把 Last-Event-ID 發送給服務器。
     * data:我是誰 這個數據就是客戶端所接受到的數據(可推送格式化過的json數據),客戶端會把這個字段解析為字符串,如果一條消息有多個 data 字段,客戶端會自動用換行符 連接成一個字符串。
     * event:myEvent 客戶端收到消息時,會在當前的 EventSource 對象上觸發一個事件,這個事件的名稱就是這個字段的值,如果消息沒有這個字段,客戶端的 EventSource 對象就會觸發默認的 message 事件。
     * retry:3000 客戶端在http超時斷開后多長時間重新連接 ,只接受整數,單位是毫秒。如果這個值不是整數則會被自動忽略。
     * </pre>
     *
     * @author Canaan
     * @date 2019/8/28 23:15
     */
    @RequestMapping(value = "sse_push", produces = "text/event-stream")
    public String push() throws InterruptedException {
        SECONDS.sleep(5);
        String msg = "當前時間為-" + LocalDateTime.now().toString();
        return String.format("data:%s\n\n", msg);
    }

}

客戶端:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

</body>

<script type="text/javascript">
    if (!!window.EventSource) {

        var source = new EventSource("/demo/sse_push");
        source.addEventListener("message", function (e) {
            //data:服務器端傳回的數據
            //origin: 服務器端URL的域名部分,即協議、域名和端口。
            //lastEventId:數據的編號,由服務器端發送。如果沒有編號,這個屬性為空。
            console.info(e.data);
        });

        source.addEventListener("open", function (e) {
            // console.info("連接打開");
        }, false);

        source.addEventListener("error", function (e) {
            if (e.readyState === EventSource.CLOSED) {
                console.info("連接關閉");
                return;
            }
            console.info(e);
        }, false);

    } else {
        alert("你的瀏覽器不支持 SSE");
    }

</script>
</html>

感謝各位的閱讀,以上就是“怎么實現spring mvc SSE服務端發送事件”的內容了,經過本文的學習后,相信大家對怎么實現spring mvc SSE服務端發送事件這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

读书| 乌什县| 仁化县| 上饶县| 马山县| 五指山市| 家居| 芦山县| 长白| 双峰县| 宁夏| 长丰县| 海林市| 琼中| 顺昌县| 逊克县| 都匀市| 舟山市| 聂荣县| 如东县| 同仁县| 大名县| 信宜市| 大新县| 中西区| 玛曲县| 格尔木市| 大英县| 城口县| 安仁县| 新营市| 巴青县| 林州市| 高邮市| 涿州市| 昭平县| 满洲里市| 蓝田县| 湖州市| 六枝特区| 濉溪县|