如何解決websocket開(kāi)啟多個(gè)頁(yè)面訪問(wèn)同一個(gè)連接會(huì)失效的問(wèn)題
websocket開(kāi)啟多個(gè)頁(yè)面訪問(wèn)同一個(gè)連接會(huì)失效
當(dāng)時(shí)開(kāi)發(fā)時(shí)用websocket和mq實(shí)現(xiàn)從微信里取數(shù)據(jù)使用mq接收在發(fā)送到websocket,因?yàn)闆](méi)有用過(guò)websocket遇到了很多坑,查找了很多方法也沒(méi)有解決掉,現(xiàn)在把我解決的方法分享給大家
我使用的是springboot微服務(wù)框架實(shí)現(xiàn)的websocket
需要導(dǎo)入jar:
org.springframework.boot
spring-boot-starter-websocket
如果你是使用ServerEndpoint這個(gè)注解實(shí)現(xiàn)的話,問(wèn)題就來(lái)了
我們做完要訪問(wèn)這個(gè)連接的時(shí)候,控制臺(tái)會(huì)報(bào)一個(gè)錯(cuò)誤
這是因?yàn)槲覀兩偌恿艘粋€(gè)@Component(“WebSocketLast”)注解
出現(xiàn)get請(qǐng)求錯(cuò)誤的原因是我們發(fā)送一個(gè)請(qǐng)求連接的時(shí)候默認(rèn)是一個(gè)get請(qǐng)求,但是我們要訪問(wèn)的不是一個(gè)controller類,映射不到方法上,
@component (把普通pojo實(shí)例化到spring容器中,相當(dāng)于配置文件中的 )
泛指各種組件,就是說(shuō)當(dāng)我們的類不屬于各種歸類的時(shí)候(不屬于@Controller、@Services等的時(shí)候),我們就可以使用@Component來(lái)標(biāo)注這個(gè)類。這樣就不會(huì)報(bào)錯(cuò)
當(dāng)打開(kāi)多個(gè)瀏覽器訪問(wèn)同一個(gè)頁(yè)面的時(shí)候,心跳測(cè)試會(huì)無(wú)法返回open給前端,長(zhǎng)連接會(huì)失效,比如:
在網(wǎng)上查了沒(méi)有解決的辦法,這個(gè)主要和單例和多例有關(guān)系,我們都知道spring是單例模式的,
singleton
表示在spring容器中的單例,通過(guò)spring容器獲得該bean時(shí)總是返回唯一的實(shí)例prototype
表示每次獲得bean都會(huì)生成一個(gè)新的對(duì)象
兩個(gè)頁(yè)面訪問(wèn)websocket的時(shí)候總是換掉上一次的路徑,所以上一次的會(huì)失效,只要在websocket類上面加上@Scope注解,注解里填上prototype就可以實(shí)現(xiàn)多頁(yè)面長(zhǎng)連接
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
關(guān)于SpringBoot大文件RestTemplate下載解決方案
這篇文章主要介紹了SpringBoot大文件RestTemplate下載解決方案,最近結(jié)合網(wǎng)上案例及自己總結(jié),寫(xiě)了一個(gè)分片下載tuling/fileServer項(xiàng)目,需要的朋友可以參考下2021-10-10startActivityForResult和setResult案例詳解
這篇文章主要介紹了startActivityForResult和setResult案例詳解,本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-08-08Spring Cloud詳解實(shí)現(xiàn)聲明式微服務(wù)調(diào)用OpenFeign方法
這篇文章主要介紹了Spring Cloud實(shí)現(xiàn)聲明式微服務(wù)調(diào)用OpenFeign方法,OpenFeign 是 Spring Cloud 家族的一個(gè)成員, 它最核心的作用是為 HTTP 形式的 Rest API 提供了非常簡(jiǎn)潔高效的 RPC 調(diào)用方式,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2022-07-07微信APP支付(IOS手機(jī)端+java后臺(tái))版
這篇文章主要為大家詳細(xì)介紹了微信APP支付(IOS手機(jī)端+java后臺(tái))版,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-05-05java網(wǎng)絡(luò)編程學(xué)習(xí)java聊天程序代碼分享
java聊天程序代碼分享,大家參考使用吧2013-12-12IDEA項(xiàng)目使用SpringBoot+MyBatis-Plus的方法
這篇文章主要介紹了IDEA項(xiàng)目使用SpringBoot+MyBatis-Plus的方法,本文分步驟通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-10-10SpringBoot引入Redis報(bào)org.springframework.data.redis.core.RedisT
這篇文章主要介紹了SpringBoot引入Redis報(bào)org.springframework.data.redis.core.RedisTemplate類找不到錯(cuò)誤問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-09-09