Spring WebScoket 消息推送及問題總結(jié)

正在做一個文件下載功能,當用戶點擊生成文件之后厅须,服務(wù)器端異步生成文件仿畸,生成好之后給瀏覽器推送一個消息,然后用戶再去下載中心下載生成好的文件朗和。

消息推送我用websocket解決错沽,以下是使用方式及我遇到的問題。

客戶端代碼

如下:

var url='ws://localhost:8889/collection-web/socket';
        var ws=new WebSocket(url);
        ws.onopen=function(){

        }
        ws.onmessage=function(event){
            showAlert(event.data);
        }

服務(wù)器端配置

<dependency>  
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-websocket</artifactId>
</dependency>

WebConfig

@Configuration
@EnableWebSocketpublic
 class WebSocketConfig extends WebMvcConfigurerAdapter implements WebSocketConfigurer {   
@Override   
 public void registerWebSocketHandlers(WebSocketHandlerRegistry registry){        
    registry.addHandler(getdownloadFileMessageWebSocketHandler(),"/socket").setAllowedOrigins("http://127.0.0.1:1337");      
registry.addHandler(getdownloadFileMessageWebSocketHandler(), "/socket/webSocketServer").withSockJS();   
 }   
 @Bean  
  public DownloadFileMessageWebSocketHandler getdownloadFileMessageWebSocketHandler(){  
 
   return new DownloadFileMessageWebSocketHandler();   
 }}

registry.addHandler(getdownloadFileMessageWebSocketHandler(),"/socket").setAllowedOrigins("http://127.0.0.1:1337");
這行代碼用于注冊handler類眶拉,客戶端鏈接地址為'/socket'丸逸,允許的客戶端鏈接為"http://127.0.0.1:1337".
第二行同理婿斥,但是第二行用于開啟,sockjs支持。

WebsocketHandler類:

public class DownloadFileMessageWebSocketHandler implements WebSocketHandler {   
 private static final List<WebSocketSession> users = Collections.synchronizedList(new ArrayList<WebSocketSession>());   
 @Override  
  public void afterConnectionEstablished(WebSocketSession session)           
 throws Exception {     
   System.out.println("鏈接成功");   
     users.add(session);  
  }   
 @Override   
 public void handleMessage(WebSocketSession session,                              WebSocketMessage<?> message) throws Exception {        //TODO    }    
@Override   
 public void handleTransportError(WebSocketSession session,                                     Throwable exception) throws Exception {      
  if(session.isOpen()){           
 session.close();      
  }       
 users.remove(session);  
  } 
   @Override  
  public void afterConnectionClosed(WebSocketSession session,                                      CloseStatus closeStatus) throws Exception {      
  System.out.println("ConnectionClosed");    
    users.remove(session);    }  
  @Override   
 public boolean supportsPartialMessages() {    
    return false;  
  } 
   public void sendMessage(String value){    
    TextMessage message=new TextMessage(value);      
  for (WebSocketSession user : users) {          
  try {             
   if (user.isOpen()) {             
       user.sendMessage(message);          
      }          
  } catch (IOException e) {          
      e.printStackTrace();        
    }      
  } 
   }
}

sendMessage用于向瀏覽器推送消息检吆。

問題:websocket跨域,403錯誤
我之前客戶端使用的sockjs价匠,但是一直被服務(wù)器拒絕残炮,403錯誤挖胃,因為我的客戶端請求為跨域請求,sockjs默認發(fā)送為'XMLHttpRequest'坞古,所以不能使用sockjs.
還有备韧,如果沒有加上setAllowedOrigins,也為403錯誤痪枫。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末织堂,一起剝皮案震驚了整個濱河市叠艳,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌易阳,老刑警劉巖附较,帶你破解...
    沈念sama閱讀 211,123評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異潦俺,居然都是意外死亡拒课,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,031評論 2 384
  • 文/潘曉璐 我一進店門事示,熙熙樓的掌柜王于貴愁眉苦臉地迎上來早像,“玉大人,你說我怎么就攤上這事肖爵÷校” “怎么了?”我有些...
    開封第一講書人閱讀 156,723評論 0 345
  • 文/不壞的土叔 我叫張陵劝堪,是天一觀的道長冀自。 經(jīng)常有香客問我,道長秒啦,這世上最難降的妖魔是什么熬粗? 我笑而不...
    開封第一講書人閱讀 56,357評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮余境,結(jié)果婚禮上驻呐,老公的妹妹穿的比我還像新娘。我一直安慰自己葛超,他們只是感情好暴氏,可當我...
    茶點故事閱讀 65,412評論 5 384
  • 文/花漫 我一把揭開白布延塑。 她就那樣靜靜地躺著绣张,像睡著了一般。 火紅的嫁衣襯著肌膚如雪关带。 梳的紋絲不亂的頭發(fā)上侥涵,一...
    開封第一講書人閱讀 49,760評論 1 289
  • 那天,我揣著相機與錄音宋雏,去河邊找鬼芜飘。 笑死,一個胖子當著我的面吹牛磨总,可吹牛的內(nèi)容都是我干的嗦明。 我是一名探鬼主播,決...
    沈念sama閱讀 38,904評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼蚪燕,長吁一口氣:“原來是場噩夢啊……” “哼娶牌!你這毒婦竟也來了奔浅?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,672評論 0 266
  • 序言:老撾萬榮一對情侶失蹤诗良,失蹤者是張志新(化名)和其女友劉穎汹桦,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體鉴裹,經(jīng)...
    沈念sama閱讀 44,118評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡舞骆,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,456評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了径荔。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片督禽。...
    茶點故事閱讀 38,599評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖总处,靈堂內(nèi)的尸體忽然破棺而出赂蠢,到底是詐尸還是另有隱情,我是刑警寧澤辨泳,帶...
    沈念sama閱讀 34,264評論 4 328
  • 正文 年R本政府宣布虱岂,位于F島的核電站,受9級特大地震影響菠红,放射性物質(zhì)發(fā)生泄漏第岖。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,857評論 3 312
  • 文/蒙蒙 一试溯、第九天 我趴在偏房一處隱蔽的房頂上張望蔑滓。 院中可真熱鬧,春花似錦遇绞、人聲如沸键袱。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,731評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蹄咖。三九已至,卻和暖如春付鹿,著一層夾襖步出監(jiān)牢的瞬間澜汤,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,956評論 1 264
  • 我被黑心中介騙來泰國打工舵匾, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留俊抵,地道東北人。 一個月前我還...
    沈念sama閱讀 46,286評論 2 360
  • 正文 我出身青樓坐梯,卻偏偏與公主長得像徽诲,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,465評論 2 348

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理谎替,服務(wù)發(fā)現(xiàn)轩拨,斷路器,智...
    卡卡羅2017閱讀 134,628評論 18 139
  • 使用 HTTP 服務(wù)器或客戶端功能必須調(diào)用require('http')院喜。 Node 里的 HTTP 接口支持協(xié)議...
    保川閱讀 1,379評論 0 1
  • 圣誕節(jié)的時候亡蓉,巧哥直播了,這次直播給我們提供了很多信息喷舀,首先要注意的是兩個要開源的事件砍濒,一個是騰訊,它將開源它自己...
    一個有個性的女漢子閱讀 355評論 0 2
  • 鬼魂的哭泣是死者的悲哀硫麻,是世間之苦的證據(jù)爸邢,可這種哭泣卻沒有淚水,就好像是隱匿在心底的痛苦拿愧,終究是發(fā)泄不出來的杠河。 我...
    葉落凡天閱讀 689評論 0 0