springboot web流式輸出內(nèi)容,打字機效果三種方式

首先流式輸出的響應(yīng)格式是:content-type: text/event-stream;charset=UTF-8,返回的內(nèi)容自然是流式響應(yīng)翠肘。

這里為了模擬打字機效果幅慌,我設(shè)置了睡眠時間來進(jìn)行模擬

方式一:StreamingResponseBody
@GetMapping("/stream")
public StreamingResponseBody stream(HttpServletResponse response) {
    // ";charset=UTF-8" 必須拼接骗随,不然中文會亂碼
    response.setContentType(MediaType.TEXT_EVENT_STREAM_VALUE+";charset=UTF-8");
    return outputStream -> {
        // 將數(shù)據(jù)寫入輸出流
        for (String s : "Hello, World!".split("")) {
            try {
                outputStream.write(s.getBytes());
                outputStream.flush();
                TimeUnit.MILLISECONDS.sleep(100);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    };
}
方式二:ResponseEntity<StreamingResponseBody>
@RequestMapping(value = "/stream")
public ResponseEntity<StreamingResponseBody> stream() {
    String msg = "       什么是愛而不得? \n" +
            "東邊日出西邊雨芦倒,道是無晴卻有晴艺挪。\n" +
            "他朝若是同淋雪,此生也算共白頭兵扬。\n" +
            "我本將心向明月麻裳,奈何明月照溝渠。\n" +
            "此時相望不相聞器钟,愿逐月華流照君津坑。\n" +
            "衣帶漸寬終不悔,為伊消得人憔悴傲霸。\n" +
            "此情可待成追憶疆瑰,只是當(dāng)時已惘然。\n" +
            "人生若只如初見狞谱,何事西風(fēng)悲畫扇乃摹。\n" +
            "曾經(jīng)滄海難為水,除卻巫山不是云跟衅。\n" +
            "何當(dāng)共剪西窗燭,卻話巴山夜雨時播歼。\n" +
            "天長地久有時盡伶跷,此恨綿綿無絕期。\n" +
            "\n";
    return ResponseEntity.ok().header("content-type",MediaType.TEXT_EVENT_STREAM_VALUE+";charset=UTF-8").body(outputStream -> {
        // 使用outputStream寫入數(shù)據(jù)
        for (String word : msg.replaceAll("","").split("")) {
            try {
                outputStream.write(word.getBytes());
                outputStream.flush();
                TimeUnit.MILLISECONDS.sleep(100);
            } catch (Exception e) {
                // 處理異常
                e.printStackTrace();
            }
        }
    });
}
方式三:HttpServletResponse
@GetMapping("/stream")
public void stream(HttpServletResponse res) throws Exception{
    //log.info("【prompt內(nèi)容】:{}", prompt);
    String str = "       什么是愛而不得? \n" +
            "東邊日出西邊雨秘狞,道是無晴卻有晴叭莫。\n" +
            "他朝若是同淋雪,此生也算共白頭烁试。\n" +
            "我本將心向明月雇初,奈何明月照溝渠。\n" +
            "此時相望不相聞减响,愿逐月華流照君靖诗。\n" +
            "衣帶漸寬終不悔郭怪,為伊消得人憔悴。\n" +
            "此情可待成追憶刊橘,只是當(dāng)時已惘然鄙才。\n" +
            "人生若只如初見,何事西風(fēng)悲畫扇促绵。\n" +
            "曾經(jīng)滄海難為水攒庵,除卻巫山不是云。\n" +
            "何當(dāng)共剪西窗燭败晴,卻話巴山夜雨時浓冒。\n" +
            "天長地久有時盡,此恨綿綿無絕期尖坤。\n" +
            "\n";
    // 響應(yīng)流
    res.setHeader("Content-Type", "text/event-stream");
    res.setContentType("text/event-stream");
    res.setCharacterEncoding("UTF-8");
    res.setHeader("Pragma", "no-cache");
    ServletOutputStream out = null;
    try {
        out = res.getOutputStream();
        for (int i = 0; i < str.length(); i++) {
            out.write(String.valueOf(str.charAt(i)).getBytes());
            // 更新數(shù)據(jù)流
            out.flush();
            Thread.sleep(100);
        }
    } catch (Exception e) {
        e.printStackTrace();
    } finally {
        try {
            if (out != null) out.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

然后前端的話稳懒,也需要sse來保持連接用于服務(wù)端推送內(nèi)容。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末糖驴,一起剝皮案震驚了整個濱河市僚祷,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌贮缕,老刑警劉巖辙谜,帶你破解...
    沈念sama閱讀 217,907評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異感昼,居然都是意外死亡装哆,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,987評論 3 395
  • 文/潘曉璐 我一進(jìn)店門定嗓,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蜕琴,“玉大人,你說我怎么就攤上這事宵溅×杓颍” “怎么了?”我有些...
    開封第一講書人閱讀 164,298評論 0 354
  • 文/不壞的土叔 我叫張陵恃逻,是天一觀的道長雏搂。 經(jīng)常有香客問我,道長寇损,這世上最難降的妖魔是什么凸郑? 我笑而不...
    開封第一講書人閱讀 58,586評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮矛市,結(jié)果婚禮上芙沥,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好而昨,可當(dāng)我...
    茶點故事閱讀 67,633評論 6 392
  • 文/花漫 我一把揭開白布救氯。 她就那樣靜靜地躺著,像睡著了一般配紫。 火紅的嫁衣襯著肌膚如雪径密。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,488評論 1 302
  • 那天躺孝,我揣著相機與錄音享扔,去河邊找鬼。 笑死植袍,一個胖子當(dāng)著我的面吹牛惧眠,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播于个,決...
    沈念sama閱讀 40,275評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼氛魁,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了厅篓?” 一聲冷哼從身側(cè)響起秀存,我...
    開封第一講書人閱讀 39,176評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎羽氮,沒想到半個月后或链,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,619評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡档押,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,819評論 3 336
  • 正文 我和宋清朗相戀三年澳盐,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片令宿。...
    茶點故事閱讀 39,932評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡叼耙,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出粒没,到底是詐尸還是另有隱情筛婉,我是刑警寧澤,帶...
    沈念sama閱讀 35,655評論 5 346
  • 正文 年R本政府宣布癞松,位于F島的核電站倾贰,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏拦惋。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,265評論 3 329
  • 文/蒙蒙 一安寺、第九天 我趴在偏房一處隱蔽的房頂上張望厕妖。 院中可真熱鬧,春花似錦挑庶、人聲如沸言秸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,871評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽举畸。三九已至查排,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間抄沮,已是汗流浹背跋核。 一陣腳步聲響...
    開封第一講書人閱讀 32,994評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留叛买,地道東北人砂代。 一個月前我還...
    沈念sama閱讀 48,095評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像率挣,于是被迫代替她去往敵國和親刻伊。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,884評論 2 354

推薦閱讀更多精彩內(nèi)容