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

springboot集成webstock實戰(zhàn):服務端數(shù)據(jù)推送數(shù)據(jù)到客戶端實現(xiàn)實時刷新

這篇具有很好參考價值的文章主要介紹了springboot集成webstock實戰(zhàn):服務端數(shù)據(jù)推送數(shù)據(jù)到客戶端實現(xiàn)實時刷新。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

背景

????之前介紹過springboot集成webstock方式,具體參考:
springboot集成websocket實戰(zhàn):站內消息實時推送
這里補充另外一個使用webstock的場景,方便其他同學理解和使用,廢話不多說了,直接開始!簡單介紹一下業(yè)務場景:
????現(xiàn)在有一個投票活動,活動詳情中會顯示投票活動的參與人數(shù)、訪問數(shù)、投票數(shù)。這三個投票數(shù)據(jù)需要實時的進行變化,這里就可以使用webstock進行返回頁面。當三個數(shù)據(jù)發(fā)生變化時,服務端發(fā)送最新數(shù)據(jù)給客戶端,客戶端僅進行展示即可,不用輪詢查詢數(shù)據(jù),頁面也會顯示動態(tài)效果。

實現(xiàn)步驟

????1.配置webstock

@Configuration
public class WebSocketConfig {

    @Bean
    public ServerEndpointExporter serverEndpointExporter() {
        return new ServerEndpointExporter();
    }
}

????2.webstocket服務邏輯說明
????每個客戶端進入活動之后需要與服務端建立一個連接,由于是在微信小程序中進行發(fā)布活動,所以使用用戶的openID進行用戶的唯一標識,每個鏈接就可以看做是客戶端與服務端的一次會話session,使用clients將所有登錄的用戶創(chuàng)建的session存儲起來,方便后期進行消息群發(fā)操作,用戶退出時將創(chuàng)建session進行關閉操作。投票數(shù)、訪問量、參與人數(shù),每個指標變化時需要調用webstock服務器中的群發(fā)消息功能,這樣就能保證三個數(shù)據(jù)變化之后客戶端可以實時顯示出最新的數(shù)據(jù),達到最終預期的效果。
????3.webstocket服務代碼實現(xiàn)

@Component
@Slf4j
@Service
@ServerEndpoint("/ws/{openId}")
public class WebSocketServer {


    // 每個在線用戶會創(chuàng)建一個WebSocketServer對象
    private static CopyOnWriteArraySet<WebSocketServer> webSocketSet = new CopyOnWriteArraySet<WebSocketServer>();

    // 存放所有在線的客戶端 key為用戶的唯一標識:userId,value為每個會話連接
    private static Map<String, Session> clients = new ConcurrentHashMap<>();



    /**
     * 連接建立成功調用的方法
     */
    @OnOpen
    public void onOpen(Session session, @PathParam("openId") String openId) throws IOException {
        log.info("dataId:{},已建立連接",openId);
        clients.put(openId, session);
        webSocketSet.add(this);


    }


    /**
     * 連接關閉調用的方法
     */
    @OnClose
    public void onClose(Session session,@PathParam("openId") String openId) {
        log.info("dataId:{},關閉連接",openId);
        clients.remove(openId);
        webSocketSet.remove(this);  //從set中刪除

    }


    /**
     * @ Param session
     * @ Param error
     */
    @OnError
    public void onError(Session session, Throwable error) {
        log.error("發(fā)生錯誤");
        error.printStackTrace();
    }


    /**
     * @Author: txm
     * @Description: 群發(fā)消息
     * @Param: []
     * @return: void
     * @Date:  2022/12/23 14:28
     **/
    public void batchSendMsg() throws IOException {
        VoteServiceImpl voteService = SpringUtils.getBean(VoteServiceImpl.class);
        // 此處是組裝返回類似的參數(shù)信息:{"joinCount":15,"visitCount":169,"voteCount":36}
        String voteStatisticsVo = voteService.findVoteStatisticsVo();
        for (Map.Entry<String, Session> integerSessionEntry : clients.entrySet()) {
            integerSessionEntry.getValue().getBasicRemote().sendText(voteStatisticsVo);
        }
    }

}

4.業(yè)務邏輯觸發(fā)說明
????這里僅以增加訪問量操作為例進行說明(投票數(shù)增加、參與人數(shù)增加同理,只是業(yè)務觸發(fā)邏輯不同),自定義了一個增加訪問量的接口,前端調用該接口則活動的訪問數(shù)量會進行加一處理,webstock服務群發(fā)消息的處理就需要在這里完成,參考代碼如下:

@Service
@Slf4j
public class VoteServiceImpl implements VoteService {

	@Autowired
    private WebSocketServer webSocketServer;

public synchronized void updateVisitCount(Integer voteId) throws IOException {

       
        System.out.println("投票活動訪問量增加操作");
        // 服務端群發(fā)消息,更新統(tǒng)計數(shù)據(jù)
        webSocketServer.batchSendMsg();

    }
    }

5.客戶端測試地址:http://1json.com/network/ws.html,輸入項目地址.
springboot集成webstock實戰(zhàn):服務端數(shù)據(jù)推送數(shù)據(jù)到客戶端實現(xiàn)實時刷新
????調用更新訪問量接口之后,可以看到服務端已經(jīng)將最新的投票統(tǒng)計信息進行了返回處理:
springboot集成webstock實戰(zhàn):服務端數(shù)據(jù)推送數(shù)據(jù)到客戶端實現(xiàn)實時刷新

springboot集成webstock實戰(zhàn):服務端數(shù)據(jù)推送數(shù)據(jù)到客戶端實現(xiàn)實時刷新

問題說明
????關于配置完成之后測試客戶端不能建立連接問題
????當時在測試的時候也出現(xiàn)過不能建立連接,分析了一下原因是項目中使用了ssl證書配置,也就是項目本身訪問的方式是https訪問,所以不能使用ws協(xié)議進行訪問,需要使用wss協(xié)議進行訪問(兩者的區(qū)別可以類比理解為http與https的區(qū)別),簡單說一下項目配置,沒有為了適配wss單獨做配置(支持https訪問的項目也會支持wss訪問).
配置文件:

server:
  port: 8083
  servlet:
    session:
      timeout: PT30M
  ssl:
      enabled: true
      key-store: classpath:config/ssl/*****.com.pfx
      key-store-password: *****
      keyStoreType: *****

證書路徑:
springboot集成webstock實戰(zhàn):服務端數(shù)據(jù)推送數(shù)據(jù)到客戶端實現(xiàn)實時刷新
說一下本地以及測試環(huán)境的訪問方式:
本地訪問:

wss://127.0.0.1:8083/ws/1

服務器訪問(使用ip訪問不通,只能使用域名):

wss://域名:8083/ws/1

????以上是使用webstock實現(xiàn)頁面數(shù)據(jù)實時刷新的實現(xiàn)過程,如果看完感覺有所幫助歡迎評論區(qū)留言或點贊!文章來源地址http://www.zghlxwxcb.cn/news/detail-483206.html

到了這里,關于springboot集成webstock實戰(zhàn):服務端數(shù)據(jù)推送數(shù)據(jù)到客戶端實現(xiàn)實時刷新的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

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

領支付寶紅包贊助服務器費用

相關文章

  • Springboot集成Docker并將鏡像推送linux服務器

    Springboot集成Docker并將鏡像推送linux服務器

    案例使用springboot項目,在IDEA 中集成Docker生成鏡像,并將鏡像發(fā)布到linux服務器 具體步驟如下: 更新系統(tǒng)的軟件包列表 安裝Docker所需的軟件包和依賴項: 完成安裝后,啟動Docker服務。在終端中運行以下命令: 驗證Docker是否成功安裝。在終端中運行以下命令: linux查看docke

    2024年02月09日
    瀏覽(25)
  • SpringBoot集成WebSocket實現(xiàn)客戶端與服務端通信

    SpringBoot集成WebSocket實現(xiàn)客戶端與服務端通信

    話不多說,直接上代碼看效果! 一、服務端: 1、引用依賴 2、添加配置文件 WebSocketConfig 3、編寫WebSocket服務端接收、發(fā)送功能 ? 聲明接口代碼: ? 實現(xiàn)類代碼: 4、如果不需要實現(xiàn)客戶端功能,此處可選擇前端調用,奉上代碼 二、客戶端: 1、引用依賴 2、自定義WebSocket客

    2024年01月23日
    瀏覽(24)
  • SpringBoot集成WebSocket實現(xiàn)客戶端與服務端長連接通信

    SpringBoot集成WebSocket實現(xiàn)客戶端與服務端長連接通信

    場景: 1、WebSocket協(xié)議是用于前后端長連接交互的技術,此技術多用于交互不斷開的場景。特點是連接不間斷、更輕量,只有在關閉瀏覽器窗口、或者關閉瀏覽器、或主動close,當前會話對象才會關閉。 2、相較于 Http/Https?通信只能由客戶端主動發(fā)起請求,而 Socket?通信不僅能

    2024年02月02日
    瀏覽(29)
  • Forest-聲明式HTTP客戶端框架-集成到SpringBoot實現(xiàn)調用第三方restful api并實現(xiàn)接口數(shù)據(jù)轉換

    Forest-聲明式HTTP客戶端框架-集成到SpringBoot實現(xiàn)調用第三方restful api并實現(xiàn)接口數(shù)據(jù)轉換

    聲明式HTTP客戶端API框架,讓Java發(fā)送HTTP/HTTPS請求不再難。它比OkHttp和HttpClient更高層, 是封裝調用第三方restful api client接口的好幫手,是retrofit和feign之外另一個選擇。 通過在接口上聲明注解的方式配置HTTP請求接口。 官網(wǎng): Forest ? 代碼地址: forest: 聲明式HTTP客戶端API框架,讓

    2024年02月04日
    瀏覽(25)
  • 使用HTTP/2實現(xiàn)服務端主動推送消息給客戶端

    使用HTTP/2實現(xiàn)服務端主動推送消息給客戶端

    77. 使用HTTP/2實現(xiàn)服務端主動推送消息給客戶端 HTTP/2 協(xié)議的服務器主動推送機制是通過服務器在接收到客戶端請求后,主動向客戶端推送相關資源的方式來實現(xiàn)的。下面將詳細解釋如何在服務器端和客戶端實現(xiàn) HTTP/2 的服務器主動推送,并給出相應的代碼示例。 客戶端實現(xiàn):

    2024年02月11日
    瀏覽(31)
  • SpringBoot集成WebSocket(實時消息推送)

    SpringBoot集成WebSocket(實時消息推送)

    ?? 簡介:java系列技術分享(??持續(xù)更新中…??) ?? 初衷:一起學習、一起進步、堅持不懈 ?? 如果文章內容有誤與您的想法不一致,歡迎大家在評論區(qū)指正?? ?? 希望這篇文章對你有所幫助,歡迎點贊 ?? 收藏 ?留言 ?? ?? 更多文章請點擊 調試工具 :http://coolaf.com/tool/chatt

    2024年04月29日
    瀏覽(25)
  • kafka:java集成 kafka(springboot集成、客戶端集成)

    kafka:java集成 kafka(springboot集成、客戶端集成)

    摘要 對于java的kafka集成,一般選用springboot集成kafka,但可能由于對接方kafka老舊、kafka不安全等問題導致kafak版本與spring版本不兼容,這個時候就得自己根據(jù)kafka客戶端api集成了。 一、springboot集成kafka 具體官方文檔地址:https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/

    2023年04月22日
    瀏覽(94)
  • 服務器給前端實時推送數(shù)據(jù)輕量化解決方案eventSource+Springboot

    服務器給前端實時推送數(shù)據(jù)輕量化解決方案eventSource+Springboot

    body代碼 js代碼 WebFlux 框架依賴jar包 控制器代碼 Flux.interval(Duration.ZERO,Duration.ofSeconds(1)),等待0秒開始,間隔1秒,F(xiàn)lux流數(shù)據(jù)里面的數(shù)字加1 三、效果展示 時間和數(shù)字一直在增加,后端在不斷推送,前端訂閱到數(shù)據(jù)更新到頁面 相對于websocket簡單很多,只需要很少的代碼就實現(xiàn)前

    2024年04月11日
    瀏覽(35)
  • SpringBoot集成WebSocket,實現(xiàn)后臺向前端推送信息

    SpringBoot集成WebSocket,實現(xiàn)后臺向前端推送信息

    在一次項目開發(fā)中,使用到了Netty網(wǎng)絡應用框架,以及MQTT進行消息數(shù)據(jù)的收發(fā),這其中需要后臺來將獲取到的消息主動推送給前端,于是就使用到了MQTT,特此記錄一下。 WebSocket協(xié)議是基于TCP的一種新的網(wǎng)絡協(xié)議。它實現(xiàn)了客戶端與服務器全雙工通信,學過計算機網(wǎng)絡都知道

    2024年01月16日
    瀏覽(18)
  • SpringBoot中使用Netty實現(xiàn)TCP通訊,服務器主動向客戶端發(fā)送數(shù)據(jù)

    SpringBoot中使用Netty實現(xiàn)TCP通訊,服務器主動向客戶端發(fā)送數(shù)據(jù)

    Springboot項目的web服務后臺,web服務運行在9100端口。 后臺使用netty實現(xiàn)了TCP服務,運行在8000端口。 啟動截圖如下: 啟動類修改: 服務器查看當前所有連接的客戶端 ?服務器獲取到所有客戶單的ip地址及端口號后,即可通過其給指定客戶端發(fā)送數(shù)據(jù) ?

    2024年02月11日
    瀏覽(29)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領取紅包

二維碼2

領紅包