欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

java中實(shí)現(xiàn)兼容ie6 7 8 9的spring4+websocket

 更新時(shí)間:2024年09月02日 16:50:19   投稿:hebedich  
這篇文章主要介紹了java中實(shí)現(xiàn)兼容ie6 7 8 9的spring4+websocket程序代碼,十分的簡(jiǎn)單實(shí)用,有需要的小伙伴可以參考下。

效果

不支持websocket的瀏覽器,用flash模擬websocket.當(dāng)然,也可以用flash socket直接與服務(wù)端socket連接。

事實(shí)上,websocket協(xié)議比較簡(jiǎn)單,用actionscript模擬也比較簡(jiǎn)單,這個(gè)在本人的另外一篇文章讓ie6 7 8 9支持html5 websocket簡(jiǎn)單說了下。

另外,spring為sockjs 提供api,只需簡(jiǎn)單配置下,就可以兼容低版本瀏覽器,原理是用js模擬websocket object。具體的本人還沒有去看。

幾點(diǎn)說明:

1.使用spring對(duì)websocket的封裝既可以單獨(dú)使用,也可以和spring mvc一起使用。需要注意的是,單獨(dú)使用時(shí),仍然要在web.xml中配置spring的dispatcher,仍然要打開server.

  <servlet>
    <servlet-name>websocket</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value> 
        /WEB-INF/applicationContext.xml 
      </param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>websocket</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>

2.單獨(dú)使用時(shí),若refer跨域,需要在spring中設(shè)置白名單

  <websocket:handlers allowed-origins="*">
       ........
  </websocket:handlers>

3.由于用到了flash,所以需要開啟843端口,并在flash請(qǐng)求policy文件時(shí),返回policy文件。例子中用的是netty4.

4.需要對(duì)握手進(jìn)行攔截,監(jiān)聽。因?yàn)樵诤竺娴膚ebsocket處理類中,無法從WebSocketSession獲得session.另外,這里獲得session要保存到arrtibutes中,在websocket處理類中,WebSocketSession調(diào)用getAttributes()方法就可以獲得arrtibutes了。

public class ChatIntercepter extends HttpSessionHandshakeInterceptor{
  
  @Override
  public boolean beforeHandshake(ServerHttpRequest request,
      ServerHttpResponse response, WebSocketHandler wsHandler,
      Map<String, Object> attributes) throws Exception {
    if (request instanceof ServletServerHttpRequest) {
      ServletServerHttpRequest servletRequest = (ServletServerHttpRequest) request;
      HttpSession session = servletRequest.getServletRequest().getSession(false);
      if (session != null) {
        String userName = (String) session.getAttribute("user");
        attributes.put("user",userName);
      }
    }
    System.out.println("Before Handshake"+request.getHeaders());
//    return super.beforeHandshake(request, response, wsHandler, attributes);
    return true;
  }
   ..............

}

5.在web-socket-js 中,flash模擬的websocket頭信息中會(huì)包含cookie,不過是人工通過腳本添加的。所以要避免需要的cookie,如session cookie是httponly.這就需要設(shè)置容器。

如果當(dāng)前是在eclipse中開發(fā)

可以看到在context標(biāo)簽上添加useHttpOnly='false'就可以了,而context標(biāo)簽是eclipse部署時(shí)自動(dòng)添加的。

如果已經(jīng)打包了,就到tomcat目錄/conf/server.xml,在最后的</Host>前面添加

復(fù)制代碼 代碼如下:

<Context docBase="websocket" path="/websocket" reloadable="true" useHttpOnly='false'/>

意思所述就是本文的全部?jī)?nèi)容了,希望大家能夠喜歡。

相關(guān)文章

  • 解決java.sql.SQLException:The?server?time?zone?value?'?D1ú±ê×?ê±??'?is?unrecognized問題

    解決java.sql.SQLException:The?server?time?zone?value?&apo

    這篇文章主要介紹了解決java.sql.SQLException:The?server?time?zone?value?'?D1ú±ê×?ê±??'?is?unrecognized問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • Java利用數(shù)組隨機(jī)抽取幸運(yùn)觀眾如何實(shí)現(xiàn)

    Java利用數(shù)組隨機(jī)抽取幸運(yùn)觀眾如何實(shí)現(xiàn)

    這篇文章主要介紹了Java利用數(shù)組隨機(jī)抽取幸運(yùn)觀眾如何實(shí)現(xiàn),需要的朋友可以參考下
    2014-02-02
  • Java中Lambda表達(dá)式基礎(chǔ)及使用

    Java中Lambda表達(dá)式基礎(chǔ)及使用

    這篇文章主要介紹了Lambda 是JDK 8 的重要新特性。它允許把函數(shù)作為一個(gè)方法的參數(shù)(函數(shù)作為參數(shù)傳遞進(jìn)方法中),使用 Lambda 表達(dá)式可以使代碼變的更加簡(jiǎn)潔緊湊,使Java代碼更加優(yōu)雅,感興趣的小伙伴一起來學(xué)習(xí)吧
    2021-08-08
  • Java實(shí)現(xiàn)AOP面向切面編程的實(shí)例教程

    Java實(shí)現(xiàn)AOP面向切面編程的實(shí)例教程

    這篇文章主要介紹了Java實(shí)現(xiàn)AOP面向切面編程的實(shí)例教程,通常Java中的AOP都是利用Spring框架中造好的輪子來開發(fā),而本文則關(guān)注于Java本身AOP的設(shè)計(jì)模式實(shí)現(xiàn),需要的朋友可以參考下
    2016-04-04
  • 多線程下怎樣保證OkHttpClient的線程安全

    多線程下怎樣保證OkHttpClient的線程安全

    這篇文章主要介紹了多線程下怎樣保證OkHttpClient的線程安全問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • 在lambda中使用外部變量的一些心得分享

    在lambda中使用外部變量的一些心得分享

    這篇文章主要介紹了在lambda中使用外部變量的一些心得,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • springboot自定義starter方法及注解實(shí)例

    springboot自定義starter方法及注解實(shí)例

    這篇文章主要為大家介紹了springboot自定義starter方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-08-08
  • Java?回調(diào)callback舉例詳解

    Java?回調(diào)callback舉例詳解

    這篇文章主要介紹了Java?回調(diào)callback舉例詳解,軟件模塊之間總是存在一定的接口,從調(diào)用方式上,可以把他們分為三類:同步調(diào)用、回調(diào)和異步調(diào)用
    2022-09-09
  • Java實(shí)現(xiàn)導(dǎo)出ZIP壓縮包的方法

    Java實(shí)現(xiàn)導(dǎo)出ZIP壓縮包的方法

    這篇文章主要介紹了Java實(shí)現(xiàn)導(dǎo)出ZIP壓縮包的方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-11-11
  • Java中的引用類型和使用場(chǎng)景詳細(xì)

    Java中的引用類型和使用場(chǎng)景詳細(xì)

    這篇文章介紹的是Java中的引用類型和使用場(chǎng)景,主要內(nèi)容展開Java中的引用類型,有強(qiáng)引用、軟引用 、弱引用、虛引用,需要的朋友可以參考一下
    2021-10-10

最新評(píng)論