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

Java-基于okhttp請求SSE接口流式返回

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

最近在開發(fā)跟大模型相關(guān)的業(yè)務(wù),需要用java去請求大模型的對話接口并支持流式的返回,變用到了sse接口。首先介紹一下什么是SSE,SSE ( Server-sent Events )是 WebSocket 的一種輕量代替方案,使用 HTTP 協(xié)議。

嚴格地說,HTTP 協(xié)議是沒有辦法做服務(wù)器推送的,但是當服務(wù)器向客戶端聲明接下來要發(fā)送流信息時,客戶端就會保持連接打開,SSE 使用的就是這種原理。

一、SSE 能做什么?

理論上, SSE 和 WebSocket 做的是同一件事情。當你需要用新數(shù)據(jù)局部更新網(wǎng)絡(luò)應(yīng)用時,SSE 可以做到不需要用戶執(zhí)行任何操作,便可以完成。

這種技術(shù)通常用于實現(xiàn)實時更新、通知和事件驅(qū)動的應(yīng)用程序,例如實時聊天、股票市場更新、新聞通知等。

二、SSE vs. WebSocket

SSE 是單向通道,只能服務(wù)器向客戶端發(fā)送消息,如果客戶端需要向服務(wù)器發(fā)送消息,則需要一個新的 HTTP 請求。這對比 WebSocket 的雙工通道來說,會有更大的開銷。這么一來的話就會存在一個「什么時候才需要關(guān)心這個差異?」的問題,如果平均每秒會向服務(wù)器發(fā)送一次消息的話,那應(yīng)該選擇 WebSocket。如果一分鐘僅 5 - 6 次的話,其實這個差異并不大。

在瀏覽器兼容方面,兩者差不多。在較早之前,每當需要建立雙向 Socket 時就會使用 Flash,在 移動瀏覽器不支持 Flash 的情況下,WebSocket 的兼容是比較難做的。

SSE 我認為最大的優(yōu)勢是便利,實現(xiàn)一個完整的服務(wù)僅需要少量的代碼;可以在現(xiàn)有的服務(wù)中使用,不需要啟動一個新的服務(wù);可以用任何一種服務(wù)端語言中使用;基于 HTTP / HTTPS 協(xié)議,可以直接運行于現(xiàn)有的代理服務(wù)器和認證技術(shù)。有了這些優(yōu)勢,在選擇使用 SSE 時就已經(jīng)為自己的項目節(jié)約了不少成本。

三、下面來寫一下如何用java調(diào)用sse接口

我們可以借助okhttp來實現(xiàn),首先引入okhttp-sse的依賴:

  <dependency>
       <groupId>com.squareup.okhttp3</groupId>
       <artifactId>okhttp-sse</artifactId>
       <version>4.12.0</version>
   </dependency>

調(diào)用代碼如下:

        OkHttpClient client = new OkHttpClient.Builder()
                .connectTimeout(10, TimeUnit.SECONDS)
                .writeTimeout(50, TimeUnit.SECONDS)
                .readTimeout(10, TimeUnit.MINUTES)
                .build();

        EventSource.Factory factory = EventSources.createFactory(client);
        // 請求體
        HashMap<String, Object> map = new HashMap<>();
        map.put("prompt","哈嘍,你好");
        map.put("history", Arrays.asList());
        map.put("temperature",0.9);
        map.put("top_p",0.7);
        map.put("max_new_tokens",4096);
        String json = JsonUtil.objectToString(map);
        RequestBody body = RequestBody.create(MediaType.parse("application/json; charset=utf-8"),json);
        // 請求對象
        Request request = new Request.Builder()
                .url("http://localhost:8001/chat")
                .post(body)
                .build();

        // 自定義監(jiān)聽器
        EventSourceListener eventSourceListener = new EventSourceListener() {
            @Override
            public void onOpen(EventSource eventSource, Response response) {
                super.onOpen(eventSource, response);
            }

            @Override
            public void onEvent(EventSource eventSource, @Nullable String id, @Nullable String type, String data) {
            //   接受消息 data
                super.onEvent(eventSource, id, type, data);
            }

            @Override
            public void onClosed(EventSource eventSource) {
                super.onClosed(eventSource);
            }

            @Override
            public void onFailure(EventSource eventSource, @Nullable Throwable t, @Nullable Response response) {
                super.onFailure(eventSource, t, response);
            }
        };

        // 創(chuàng)建事件
        EventSource eventSource = factory.newEventSource(request, eventSourceListener);

3.運行效果文章來源地址http://www.zghlxwxcb.cn/news/detail-804271.html

""
"你" 
"你好"
"你好??"
"你好??!"
"你好??!很高興"
"你好??!很高興見到"
"你好??!很高興見到你"
"你好??!很高興見到你,"
"你好??!很高興見到你,歡迎"
"你好??!很高興見到你,歡迎問我"
"你好??!很高興見到你,歡迎問我任何"
"你好??!很高興見到你,歡迎問我任何問題"
"你好??!很高興見到你,歡迎問我任何問題。"

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

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

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

相關(guān)文章

  • 前端實現(xiàn)chatGpt流式輸出 - SSE

    前端實現(xiàn)chatGpt流式輸出 - SSE

    一、chatGpt流式輸出技術(shù)分析 在使用ChatGPT時,模型的回復(fù)內(nèi)容是連續(xù)輸出,而不是整段話直接出現(xiàn),因為模型需要不斷預(yù)測接下來要回復(fù)什么內(nèi)容,如果等整段回復(fù)生成之后再輸出到網(wǎng)頁,用戶體驗就會很差,后面才了解到使用SSE技術(shù)可以實現(xiàn)。 相關(guān)知識小tips 長輪詢:客戶

    2024年03月18日
    瀏覽(22)
  • Android okHttp-sse 實現(xiàn)chatgpt逐字逐句效果

    1. 什么是SSE Server-Send Events 服務(wù)器發(fā)送事件,簡稱SSE。服務(wù)器主動向客戶端推送消息,我們常見的有 WebSocket (SignalR) ,SSE 也是其中一種。 ? ? SSE 是HTML5規(guī)范的一部分,該規(guī)范非常簡單,主要由兩部分組成:第一部分是服務(wù)端與瀏覽器端的通訊協(xié)議(Http協(xié)議),第二部分是

    2024年02月07日
    瀏覽(21)
  • chatGPT流式輸出前端實現(xiàn)fetch、SSE、websocket

    fetch 本身不直接支持流式輸出,但你可以使用 ReadableStream 和 TextDecoder 等 Web Streams API 來實現(xiàn)類似的效果。 在 SSE 中,瀏覽器通過發(fā)送 HTTP GET 請求到服務(wù)器上特定的 SSE 端點(endpoint),然后服務(wù)器通過該連接發(fā)送事件(event)和相關(guān)數(shù)據(jù)到客戶端,故SSE 主要使用 GET 請求。E

    2024年02月04日
    瀏覽(27)
  • WEB通訊技術(shù)。前端實現(xiàn)SSE長連接,nodejs+express搭建簡單服務(wù)器,進行接口調(diào)試,通過curl請求數(shù)據(jù)

    WEB通訊技術(shù)。前端實現(xiàn)SSE長連接,nodejs+express搭建簡單服務(wù)器,進行接口調(diào)試,通過curl請求數(shù)據(jù)

    長連接(Keep-Alive)是一種HTTP/1.1的持久連接技術(shù),它允許客戶端和服務(wù)器在一次TCP連接上進行多個HTTP請求和響應(yīng),而不必為每個請求/響應(yīng)建立和斷開一個新的連接。長連接有助于減少服務(wù)器的負載和提高性能。 長連接的HTTP請求方法與普通HTTP請求方法相同,可以使用GET、P

    2024年02月09日
    瀏覽(29)
  • 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)
  • Java請求Http接口-OkHttp(超詳細-附帶工具類)

    Java請求Http接口-OkHttp(超詳細-附帶工具類)

    簡介:OkHttp是一個默認有效的HTTP客戶端,有效地執(zhí)行HTTP可以加快您的負載并節(jié)省帶寬,如果您的服務(wù)有多個IP地址,如果第一次連接失敗,OkHttp將嘗試備用地址。這對于IPv4 + IPv6和冗余數(shù)據(jù)中心中托管的服務(wù)是必需的。OkHttp啟動具有現(xiàn)代TLS功能(SNI,ALPN)的新連接,并在握手

    2024年02月12日
    瀏覽(32)
  • chatgpt 逐字輸出 使用fetch/eventSource/fetchEventSouce進行sse流式處理

    chatgpt 逐字輸出 使用fetch/eventSource/fetchEventSouce進行sse流式處理

    前端使用vue 先貼最后成功使用的 使用fetchEventSource方法 參考代碼:https://blog.csdn.net/cuiyuchen111/article/details/129468291 參考/下載文檔:https://www.npmjs.com/package/@microsoft/fetch-event-source?activeTab=readme 以下為后端接口要求 前端代碼 遇到的問題: 1.只調(diào)用一次事件 但fetch請求發(fā)送了兩次或

    2024年02月07日
    瀏覽(26)
  • 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)
  • Java Springboot SSE 解決永久存活 判斷客戶端離線問題

    Java Springboot SSE 解決永久存活 判斷客戶端離線問題

    ????????在生產(chǎn)環(huán)境下,服務(wù)端的SseEmitter對象在初始化時可以填入?yún)?shù),以保證其存活時間,一旦超時,客戶端會自動斷線重連,在這個過程中如果沒有做消息隊列等緩存手段,就可能會丟數(shù)據(jù)。 ? ? ? ? 但是如果設(shè)置SseEmitter存活時間為永久(參數(shù)填0),就會導(dǎo)致服務(wù)

    2024年02月01日
    瀏覽(61)
  • ChatGPT 前端流式數(shù)據(jù)如何處理?本文提供三種方案為你揭開疑惑【websocket、SSE、fetch Stream]

    ChatGPT 前端流式數(shù)據(jù)如何處理?本文提供三種方案為你揭開疑惑【websocket、SSE、fetch Stream]

    當下chatGPT如此火熱,很多開發(fā)者都想部署一個 自己的gpt站點,本文不細致討論gpt部署,只是著重總結(jié)一下博主在接入gpt時對于內(nèi)容流失輸出的解決方案,【代碼質(zhì)量并不高,感興趣的小伙伴可以簡單參考】 各個平臺兼容性也比較友好,且支持小程序【小程序需要使用其內(nèi)部自

    2024年02月04日
    瀏覽(25)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包