一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服務器之家 - 編程語言 - JAVA教程 - java中實現兼容ie6 7 8 9的spring4+websocket

java中實現兼容ie6 7 8 9的spring4+websocket

2019-12-20 14:37hebedich JAVA教程

這篇文章主要介紹了java中實現兼容ie6 7 8 9的spring4+websocket程序代碼,十分的簡單實用,有需要的小伙伴可以參考下。

效果

java,spring4,websocket

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

事實上,websocket協議比較簡單,用actionscript模擬也比較簡單,這個在本屌的另外一篇文章讓ie6 7 8 9支持html5 websocket簡單說了下。

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

幾點說明:

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<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.單獨使用時,若refer跨域,需要在spring中設置白名單

?
1
2
3
<websocket:handlers allowed-origins="*">
     ........
</websocket:handlers>

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

4.需要對握手進行攔截,監聽。因為在后面的websocket處理類中,無法從WebSocketSession獲得session.另外,這里獲得session要保存到arrtibutes中,在websocket處理類中,WebSocketSession調用getAttributes()方法就可以獲得arrtibutes了。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
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頭信息中會包含cookie,不過是人工通過腳本添加的。所以要避免需要的cookie,如session cookie是httponly.這就需要設置容器。

如果當前是在eclipse中開發

java,spring4,websocket

可以看到在context標簽上添加useHttpOnly='false'就可以了,而context標簽是eclipse部署時自動添加的。

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

 

復制代碼 代碼如下:

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

 

意思所述就是本文的全部內容了,希望大家能夠喜歡。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 日韩成人免费aa在线看 | 国产精品亚洲一区二区久久 | 911色_911色sss在线观看 | 国产精品对白刺激久久久 | 青春草视频在线免费观看 | 久久青草费线频观看国产 | 亚洲另类激情 | 欧美大片一区二区三区 | 天天综合天天影视色香欲俱全 | 日韩精品在线视频观看 | 亚洲免费国产 | 门房秦大爷在线阅读 | 成年人在线观看视频免费 | 娇小性色 | 四影虎库最新2021 | 国产高清自拍视频 | 欧美激情 亚洲 | 网站在线播放 | 亚洲日本中文字幕天堂网 | chinese老头和老太交hd | 动漫美女羞羞视频 | 99热在线观看免费 | 晚上禁用的十大黄台视频 | 91污污视频| 九九热精品免费观看 | 青青青青久久国产片免费精品 | 欧美性xxxxx| 免费一区二区 | 亚洲国产三级在线观看 | 亚洲精品第五页 | 午夜爽喷水无码成人18禁三级 | 成年性香蕉漫画在线观看 | 高h喷水荡肉爽文np肉色文 | 国内久久精品视频 | 日本三级免费网站 | 思思玖玖玖在线精品视频 | 91天堂国产在线 在线播放 | 欧美日韩亚洲高清不卡一区二区三区 | 国产麻豆91网在线看 | 欧洲vodafonewifi日本 | 范冰冰上面好大下面好紧 |