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

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

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'/>

 

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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 91麻豆网址 | 蜜桃麻豆 | 亚洲精品卡一卡2卡3卡4卡 | 日本在线国产 | 亚洲精品私拍国产福利在线 | 果冻传媒在线完整免费观 | 亚洲精品中文字幕久久久久久 | 夫承子液by免费阅读 | 啊好爽视频 | 教练你好大轻点漫 | 国产美女在线一区二区三区 | 亚洲精品国产一区二区第一页 | 欧美激情综合 | 挺进白嫩老师下面视频 | 视频一区国产精戏刘婷30 | 四虎成人国产精品视频 | 天美蜜桃精东乌鸦传媒 | 91免费播放| 久久内在线视频精品mp4 | 青青草99久久精品国产综合 | 麻豆资源 | 国产巨大bbbb俄罗斯 | 好大好硬好深好爽想要吃奶 | 国产精品成人扳一级aa毛片 | tube性睡觉hd | 亚洲成人一区在线 | 故意短裙公车被强好爽在线播放 | 动漫美女被羞羞产奶 | 52zfl宅福利yxpjw | 成年人福利 | 精品福利一区二区免费视频 | 欧美男女爱爱视频 | 天堂在线免费观看 | 久久re热在线视频精99 | 国产精品理论片在线观看 | 色综久久天天综合绕视看 | 午夜国产精品福利在线观看 | 2019亚洲男人天堂 | sedog在线长片 | 欧美男男xxx激情做受 | 日本不卡视频免费的 |