當(dāng)前位置:首頁(yè) >  站長(zhǎng) >  編程技術(shù) >  正文

WebSocket配置中會(huì)遇到的一些問(wèn)題

 2020-01-17 17:49  來(lái)源: A5用戶投稿   我來(lái)投稿 撤稿糾錯(cuò)

  域名預(yù)訂/競(jìng)價(jià),好“米”不錯(cuò)過(guò)

今天來(lái)整理一些我在工作中配置上遇到的一些問(wèn)題。

Q1使用nginx代理后不能訪問(wèn)。報(bào)錯(cuò)WARNING:tornado.access:400 GET /ws (127.0.0.1) 0.79ms  或者連接失敗后會(huì)反復(fù)發(fā)起連接請(qǐng)求。

需要在nginx的location中新增如下配置

# websocket

proxy_http_version 1.1;

proxy_set_header Upgrade $http_upgrade;

proxy_set_header Connection "upgrade";

Q2 跨域問(wèn)題(spring websocket)

經(jīng)查閱官方文檔springwebsocket 4.1.5版本前默認(rèn)支持跨域訪問(wèn),之后的版本默認(rèn)不支持跨域,需要設(shè)置

.setAllowedOrigins(“*”)

@Override

public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {

registry.addHandler(myWebSocketHandler(), "/echo.do").setAllowedOrigins("*").addInterceptors(new HandshakeInterceptor());

registry.addHandler(myWebSocketHandler(), "/echo").setAllowedOrigins("*").addInterceptors(new HandshakeInterceptor())

.withSockJS();

}

Q3 *.do配置導(dǎo)致sockjs失效問(wèn)題(spring websocket)

web.xml中添加如下配置

dispatcher

/sockjs/*

websocket配置類中路徑中不加sockjs

registry.addHandler(myWebSocketHandler(), "/echo").setAllowedOrigins("*").addInterceptors(new HandshakeInterceptor())

.withSockJS(); 

前端調(diào)用時(shí)應(yīng)加上sockjs

websocket = new SockJS("http://127.0.0.1:8080/WebSocketTest001/sockjs/echo");

Q4 一個(gè)websocketsession對(duì)應(yīng)多個(gè)session的情況 

這是由于盡管每次都能保證有一個(gè)websocketsession存在,但客戶端沒(méi)連接一次tomcat都建立一個(gè)鏈接,除非你在請(qǐng)求頭里添加cookie:JSESSIONID=xxxxxx

Q5 能收到客戶端消息,后臺(tái)也顯示發(fā)送,但是客戶端收不到 

這個(gè)問(wèn)題經(jīng)我個(gè)人觀察和猜測(cè),應(yīng)該是websocketsession沒(méi)有成功關(guān)閉或者成功關(guān)閉但是和一個(gè)websocketsession對(duì)應(yīng)多個(gè)session有關(guān),因?yàn)槲野焉厦娴膯?wèn)題解決了之后,這個(gè)問(wèn)題也沒(méi)出現(xiàn)過(guò)了。

如果你們覺(jué)得自己或者團(tuán)隊(duì)弄WebSocket這塊比較麻煩,或者開(kāi)發(fā)成本高,周期長(zhǎng)的話,可以考慮用三方的。

我這里只推薦個(gè)免費(fèi)的 GoEasy 你們自己可以去看看。

希望這些問(wèn)題的解決方法對(duì)大家有幫助

申請(qǐng)創(chuàng)業(yè)報(bào)道,分享創(chuàng)業(yè)好點(diǎn)子。點(diǎn)擊此處,共同探討創(chuàng)業(yè)新機(jī)遇!

相關(guān)標(biāo)簽
技術(shù)
服務(wù)器軟件

相關(guān)文章

  • 入夏以來(lái),nginx中國(guó)首場(chǎng)技術(shù)盛宴!nginx社區(qū)線下沙龍-北京專場(chǎng)圓滿舉辦

    2002年,一位名叫IgorSysoev來(lái)自“戰(zhàn)斗民族”俄羅斯的極客寫(xiě)出了一個(gè)叫NGINX的HTTP和反向代理web服務(wù)器,也許那時(shí)他也不曾想過(guò),19年后的NGINX會(huì)成為全球最受歡迎的開(kāi)源產(chǎn)品之一,和被大家所公認(rèn)的那個(gè)“讓產(chǎn)品在支持高并發(fā)請(qǐng)求的同時(shí)保持高效的服務(wù)”——“最好的選擇”。

  • TurboEx軟件,國(guó)產(chǎn)化郵件系統(tǒng)改造優(yōu)質(zhì)之選

    在我國(guó)金融、能源、交通、政府等行業(yè)部門的生產(chǎn)、調(diào)度、管理、辦公等重要信息系統(tǒng)中,硬件和軟件系統(tǒng)主要依賴國(guó)外的產(chǎn)品品牌,很多行業(yè)的重要數(shù)據(jù)存放于國(guó)外品牌的軟硬件設(shè)備上,自主可控性差,存在著極大的安全保密隱患。

    標(biāo)簽:
    服務(wù)器軟件
  • MongoDB全球云端技術(shù)盛會(huì)MongoDB.live

    MongoDB全球云端技術(shù)盛會(huì)MongoDB.live,將于北京時(shí)間6月9日22:00正式開(kāi)啟,大會(huì)將以在線直播+按需學(xué)習(xí)相結(jié)合的方式,面向全球開(kāi)發(fā)者、架構(gòu)師等MongoDB用戶和愛(ài)好者免費(fèi)開(kāi)放

    標(biāo)簽:
    云計(jì)算
    技術(shù)
  • ECC+RSA雙證書(shū)解決方案

    ECC是EllipticCurvesCryptography的縮寫(xiě),意為橢圓曲線密碼編碼學(xué)。和RSA算法一樣,ECC算法也屬于公開(kāi)密鑰算法。最初由Koblitz和Miller兩人于1985年提出,其數(shù)學(xué)基礎(chǔ)是利用橢圓曲線上的有理點(diǎn)構(gòu)成Abel加法群上橢圓離散對(duì)數(shù)的計(jì)算困難性。

    標(biāo)簽:
    技術(shù)
  • 60位嘉賓13個(gè)主題帶你瞭望大前端新技術(shù),GMTC深圳成功舉辦

    GMTC關(guān)注前端、移動(dòng)、AI應(yīng)用等多個(gè)前沿技術(shù)領(lǐng)域及實(shí)踐經(jīng)驗(yàn),旨在通過(guò)技術(shù)趨勢(shì)研討與前沿案例剖析,促進(jìn)全球技術(shù)交流,推動(dòng)國(guó)內(nèi)技術(shù)升級(jí)。本屆GMTC為期4天,包括兩天的會(huì)議和兩天的培訓(xùn)課,主要面向各行業(yè)前端、移動(dòng)開(kāi)發(fā)、AI技術(shù)感興趣的中高端技術(shù)人員。

    標(biāo)簽:
    技術(shù)
    大會(huì)

熱門排行

信息推薦