【问题标题】:WebSocket and browsers supportWebSocket 和浏览器支持
【发布时间】:2014-07-28 19:02:32
【问题描述】:

我正在考虑使用 WebSocket 来实现一个基本的 1-1 聊天应用程序。

根据本网站:http://caniuse.com/websockets
IE6-IE9 不支持 WebSocket。

我认为在 2014 年不支持 IE6/7 是合理的,但仍然有很多用户使用 IE8/9。

所以我认为选择 WebSocket 对我不利。

你对我的案子有什么看法?我应该使用 WebSocket 吗?什么是最好的选择?

谢谢。

更新:
我正在使用播放!框架

【问题讨论】:

  • 您可以使用Server-Sent Events 实现聊天,尽管就 IE 而言其原生支持为零,但可以使用 AJAX 填充。
  • 大多数不错的套接字包,如 socket.io、pubnub 等,都提供了后备的老式后备服务器推送技术,如 long-poll、SSE、COMET 等。

标签: javascript web websocket client-server chat


【解决方案1】:

有一个基于 Flash 的 WebSocket polyfill 适用于旧版 IE:https://github.com/gimite/web-socket-js

还有适用于 IE 的 Google Chrome Frame。

要缓解中间人不知道 WebSocket 的问题,请使用 TLS(安全 WebSocket)。这将使它在几乎所有情况下都能正常工作(MITM / TLS 拦截代理除外)。

【讨论】:

  • 谢谢。 Google Chrome Frame for IE 有什么用?
  • Chrome Frame 本质上将使用 Chrome 引擎在 IE 窗口中呈现 HTML 页面 如果 HTML 页面包含特定指令来启用它。当页面不包含提示时,IE 会照常呈现页面。
  • 是的,但我不能命令我的用户使用这个扩展 :)
  • 当然。它可以帮助封闭的用户组。然而,大多数人在 IE 上也有 Flash。使用 Flash polyfill 可以避免基于 HTTP 长轮询的回退。
【解决方案2】:

当浏览器以及您的服务和客户端之间的所有管道都支持 Websocket 时,它们会很好地工作。除了浏览器问题之外,许多代理和负载均衡器也不支持 websocket。

我建议使用 websockets,但如果这不起作用,也可以对长轮询或服务器发送事件实施某种回退。

由于您没有提及服务器类型或语言,我无法提供任何建议。

【讨论】:

  • 谢谢。我正在使用播放!框架。你能给我一些建议吗?
  • 我对 Play 没有任何经验!但我使用了 Atmosphere 并发现它运行良好。根据 Atmosphere 文档,他们支持 Play! github.com/Atmosphere/atmosphere-play。祝你好运!
猜你喜欢
  • 1970-01-01
  • 2010-11-18
  • 2015-07-10
  • 1970-01-01
  • 2012-04-10
  • 2019-07-30
  • 2012-02-14
  • 2010-11-24
相关资源
最近更新 更多