當前位置:首頁 >  站長 >  編程技術(shù) >  正文

WebSocket配置中會遇到的一些問題

 2020-01-17 17:49  來源: A5用戶投稿   我來投稿 撤稿糾錯

  域名預訂/競價,好“米”不錯過

今天來整理一些我在工作中配置上遇到的一些問題。

Q1使用nginx代理后不能訪問。報錯WARNING:tornado.access:400 GET /ws (127.0.0.1) 0.79ms  或者連接失敗后會反復發(fā)起連接請求。

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

# websocket

proxy_http_version 1.1;

proxy_set_header Upgrade $http_upgrade;

proxy_set_header Connection "upgrade";

Q2 跨域問題(spring websocket)

經(jīng)查閱官方文檔springwebsocket 4.1.5版本前默認支持跨域訪問,之后的版本默認不支持跨域,需要設(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配置導致sockjs失效問題(spring websocket)

web.xml中添加如下配置

dispatcher

/sockjs/*

websocket配置類中路徑中不加sockjs

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

.withSockJS(); 

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

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

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

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

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

這個問題經(jīng)我個人觀察和猜測,應(yīng)該是websocketsession沒有成功關(guān)閉或者成功關(guān)閉但是和一個websocketsession對應(yīng)多個session有關(guān),因為我把上面的問題解決了之后,這個問題也沒出現(xiàn)過了。

如果你們覺得自己或者團隊弄WebSocket這塊比較麻煩,或者開發(fā)成本高,周期長的話,可以考慮用三方的。

我這里只推薦個免費的 GoEasy 你們自己可以去看看。

希望這些問題的解決方法對大家有幫助

申請創(chuàng)業(yè)報道,分享創(chuàng)業(yè)好點子。點擊此處,共同探討創(chuàng)業(yè)新機遇!

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

相關(guān)文章

熱門排行

信息推薦