最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

如何解決websocket開啟多個頁面訪問同一個連接會失效的問題

 更新時間:2024年09月19日 15:21:52   作者:養(yǎng)歌  
使用WebSocket時,若多個頁面訪問同一個WebSocket連接可能會導致連接失效,遇到這個問題時,可以通過在SpringBoot中使用@ServerEndpoint注解并添加@Component來解決,出現連接錯誤通常是因為WebSocket連接接收到的是一個GET請求

websocket開啟多個頁面訪問同一個連接會失效

當時開發(fā)時用websocket和mq實現從微信里取數據使用mq接收在發(fā)送到websocket,因為沒有用過websocket遇到了很多坑,查找了很多方法也沒有解決掉,現在把我解決的方法分享給大家

我使用的是springboot微服務框架實現的websocket

需要導入jar:

  • org.springframework.boot
  • spring-boot-starter-websocket

如果你是使用ServerEndpoint這個注解實現的話,問題就來了

我們做完要訪問這個連接的時候,控制臺會報一個錯誤

這是因為我們少加了一個@Component(“WebSocketLast”)注解

出現get請求錯誤的原因是我們發(fā)送一個請求連接的時候默認是一個get請求,但是我們要訪問的不是一個controller類,映射不到方法上,

@component (把普通pojo實例化到spring容器中,相當于配置文件中的
)

泛指各種組件,就是說當我們的類不屬于各種歸類的時候(不屬于@Controller、@Services等的時候),我們就可以使用@Component來標注這個類。這樣就不會報錯

當打開多個瀏覽器訪問同一個頁面的時候,心跳測試會無法返回open給前端,長連接會失效,比如:

在網上查了沒有解決的辦法,這個主要和單例和多例有關系,我們都知道spring是單例模式的,

  • singleton表示在spring容器中的單例,通過spring容器獲得該bean時總是返回唯一的實例
  • prototype表示每次獲得bean都會生成一個新的對象

兩個頁面訪問websocket的時候總是換掉上一次的路徑,所以上一次的會失效,只要在websocket類上面加上@Scope注解,注解里填上prototype就可以實現多頁面長連接

總結

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

最新評論

奎屯市| 文山县| 三明市| 嫩江县| 治多县| 明水县| 萨迦县| 图们市| 临夏市| 安远县| 昭觉县| 通河县| 临海市| 宝坻区| 开鲁县| 沂源县| 兴国县| 中阳县| 大宁县| 桐城市| 额尔古纳市| 大埔区| 奈曼旗| 沽源县| 洛隆县| 磴口县| 左贡县| 上蔡县| 滦平县| 广丰县| 克山县| 蒲城县| 郯城县| 贵阳市| 东乌珠穆沁旗| 民县| 扶沟县| 波密县| 郯城县| 澄迈县| 洱源县|