激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

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

香港云服务器
服務(wù)器之家 - 編程語言 - JAVA教程 - java中實現(xiàn)兼容ie6 7 8 9的spring4+websocket

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

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

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

效果

java,spring4,websocket

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

事實上,websocket協(xié)議比較簡單,用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中設(shè)置白名單

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

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

4.需要對握手進行攔截,監(jiān)聽。因為在后面的websocket處理類中,無法從WebSocketSession獲得session.另外,這里獲得session要保存到arrtibutes中,在websocket處理類中,WebSocketSession調(diào)用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.這就需要設(shè)置容器。

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

java,spring4,websocket

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

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

 

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

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

 

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

延伸 · 閱讀

精彩推薦
612
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25
主站蜘蛛池模板: qyl在线视频精品免费观看 | 91美女视频在线观看 | 国产午夜精品一区二区三区不卡 | av观看国产 | 亚洲一区免费电影 | 美女性感毛片 | 黄污免费网站 | 久久精品亚洲精品国产欧美kt∨ | 成人国产在线视频 | 免费黄色欧美视频 | 欧美在线日韩 | 在线天堂中文字幕 | 久久国产免费视频 | 黄色午夜剧场 | 成人在线视频播放 | 日日夜av | 日本羞羞影院 | 欧美一区欧美二区 | 中文字幕免费一区 | 亚洲综合视频在线播放 | 强伦女教师视频 | 欧洲黄色一级视频 | 欧美一级一区二区三区 | 国产超碰人人做人人爱 | 中文字幕综合在线观看 | 在线观看国产 | 黄视频免费观看 | 综合成人在线 | 久久久久在线观看 | 黄色的视频在线观看 | 毛片视频大全 | 看毛片电影 | 高清做爰免费无遮网站挡 | 国产欧美亚洲精品a | 操你逼 | 毛片在线免费观看视频 | 久久久久亚洲a | 亚洲精品午夜视频 | 香蕉久久久精品 | 日本成人一区二区三区 | 一本色道久久综合亚洲精品图片 |