WebSockets的9大杀手级功能

用户要求在尽可能短的时间内获得信息,等你刷新页面才能更新信息,就太迟了!好在有一种协议WebSockets,它允许直接数据交换,并且支持所有的现代浏览器。

没有任何一种解决方案像WebSockets一样能够提供真正的双向沟通,虽然仍有许多Web开发人员依赖基于AJAX的这种长轮询(long polling)方式(声明一下,我个人认为长轮询有高度创造性和功能性,但其不过是Hack方法而已)。以前人们对WebSockets的关注不多,大概有两个原因,一是几年前还存在一些安全漏洞,二是当时的浏览器不能完全支持它。不过这两点现在已不再是问题了。

考虑以下两个方面的需求可以帮助选择要不要使用WebSockets:

  • 你的应用程序需要供很多人同时在线交流吗?
  • 是否窗口服务器端数据不断变化?

但凡涉及其中任一需求,我建议你使用WebSockets。如果还不确定结论,那么接下来我将为大家介绍WebSockets的几个最实用的功能。

1.社交需求

社交应用给大家的福利之一,就是让你随时获知朋友们都在做什么。听上去有点变态,但确实大多数人都喜爱这一点。人们想要在第一时间知道有关家人或者朋友的资讯,社交应用必须满足大家这一需求,随时提供给大家最新的实时友人动态信息。

2.多玩家游戏

如今网络越来越被大家熟知其游戏平台的功能,不需要依靠任何插件(甚至不用Flash),网站开发者已经知道如何在浏览器上实现完美的游戏画面。不管你用的是DOM元素、CSS动画、HTML5画布、还是WebGL之类的,多个玩家之间的互动都是非常重要的。

3.协同编码

现在更多是分散式的开发团队,大家分别处理一个文档副本,最后再把所有人的工作整合到一起。类似Git这样的版本控制系统对处理某些文档很有帮助,但有很多文档冲突是Git无法解决的,还需要追踪到编写这段代码的个人。使用WebSockets中的协同解决方案,所有人同时处理同一个文档,跳过合并步骤,而且能看到其他人正在编写的代码是否与自己处理的程序段相同,结果是减少重复性工作,并使文档整体一致性增强。(极客标签的Live课程就使用了类似的技术)

4.点击流数据

分析用户如何与网站互动,对于完善与提高网站内容有着至关重要的作用。HTTP成本迫使我们优先择优与收集最重要的数据,六个月过去了,我们才意思到本应该收集一个不同的指标数据——虽然它好像无关紧要,但其将在一个至关重要的决定方面有所指引。随着HTTP请求开销减少,你可以较少的限制从客户机发送的数据。除了页面加载,你还想追踪鼠标移动轨迹?只需通过WebSocket连接发送数据到后端,并将其保存在你喜欢的NoSQL存储即可。然后就可以回放客户交互看看当时发生了什么情况。

5.金融行情

金融界变化迅猛——可以说微秒级的变化。我们的大脑无法那么快速的处理数据,所以要编写不同的算法帮助我们达到目的。即使你不用处理高频交易,陈旧的信息只有坏处没有好处。如果你有一个仪表盘跟踪你感兴趣的公司,你想要知道的是现在/此刻公司的价值是多少,而非10秒前的价值。使用WebSockets数据流,再也不用等待!

6.体育比赛更新

让我们来谈谈人们热衷讨论的话题——运动比赛。我本人不是个球迷,但我知道大家都喜欢看哪类比赛。当爱国者比赛的时候,我哥哥简直无法抗拒诱惑。这是一种近乎暴力的恍惚状态,本能反应。我反正不能理解,不过我很尊重这种执着,所以我最不希望发生的就是让执着于运动的人们不能及时看比赛。如果你的应用程序中涉及体育比赛的信息,强烈建议使用WebSockets增强更新速度。

7.多媒体聊天

虽然一群人面对面举行会议是无法取代的一种形式,但当无法在同一地点聚集所有人时,采用视频会议能达到同样的目的。视频会议往往需要繁琐的接线以及所有参与者的耐心。我是网络开放的追求者,所以我认为WebSockets的getUserMedia API's以及HTML5音频与视频元素的组合才是正确的选择。WebRTC是该组合的逻辑前身,看上去蛮有前途,但最终由于缺乏浏览器支持而落后到第二的位置。(极客标签的协作工具使用了webRTC)

8.基于定位的应用

越来越多的开发人员利用移动设备的GPS功能,使他们的应用能够获取定位。假如在一定时间段内追踪用户定位轨迹(例如运行一个应用程序沿着用户行进的路线定位追踪),将收集到细粒数据。如果需要实时更新Web仪表盘(比如一个田径教练用来检测运动员的速度),HTTP将是不必要的笨重。让TCP连接运用WebSockets吧,数据会飞快传输。

9.网络教育

如今学校的学费越来越贵,而互联网发展的更快,其成本更低。网络教育是学习的极好途径,特别是如果可以与老师和其他同学互动最好不过了。WebSockets自然而然是最好的选择,它允许多人聊天、文本聊天甚至支持多人在同一块公共数字黑板上写字等其他福利,如果你参加过极客标签社区里的Live课程的话,应该很熟悉类似的功能。

你可能感兴趣的:(web开发,移动设备,视频会议,社交应用,协作工具)