网站远程控制

时间:2013-05-04 09:31:57

标签: websocket long-polling server-push

我想开始创建一个在手机(任何类型的智能手机)上打开的网站。该网站将具有控制您已在计算机上打开的网站的功能。 (2011年的大众新世纪甲壳虫有这个功能,我可以在台式电脑上打开的网站上通过智能手机滚动)

我们有一个关于horsevideos的流媒体网站,如果他们能够通过智能电视观看流媒体并通过iphone / android / wp进行控制,这对我们的客户来说将是一个很棒的功能。

来自瑞士的wilmaa.com为智能手机提供了一个遥控器,可以在我的网站上浏览智能电视/网络浏览器。

因为我需要一个起点来了解它是如何工作的我正在检查谷歌,也许外面已经有任何遥控器,但不幸的是我找不到任何东西。

也许Stack Overflow可以通过给出一些如何实现这一点的起点来帮助我。

1 个答案:

答案 0 :(得分:6)

要做到这一点,你需要某种“推送”服务,能够克服HTTP的固有缺点,它始终是一个“只拉动”系统 - 客户端发起请求,服务器回答。在这种情况下,您希望将事件从服务器推送到客户端。

在过去的几年里,这已经完成了所谓的'长轮询'。这意味着您“滥用”浏览器中存在的机制,以保护服务器免受挂起请求,但允许它们花费一些时间。默认情况下,Apache配置为允许请求在大多数平台上持续300秒。长轮询通过发送Ajax请求来工作,如果服务器没有数据,而不是发送回来它只是等待,直到它 有数据,或长时间如一分钟已过期。客户端在收到响应之前不会发送新请求。这给终端用户提供了实时反馈的幻觉,也是像Facebook等网站多年来一直这样做的。

几个月后,我们也可以采用一种新的HTML5技术,该技术现在在所有主流浏览器上都有稳定的实现: Websockets 。该技术允许服务器将公共拉取请求升级为完全双向连接,从而允许浏览器和服务器之间的实时通信。令人遗憾的是,像Apache这样的“常规”Web服务器并不是真的为这种逻辑构建的,尽管可以使用像Ratchet这样的框架来模拟它。对于系统的实时部分,大多数站点的当前平台选择,包括此处的Stack Overflow,都是node.js - serverside异步Javascript。

在你的情况下我会推荐什么:

  • 设置一个单独的node.js服务器作为事件调度程序(您可以在亚马逊上获得一个价格便宜的微型EC2实例,每月15美元,这可能就足够了,并且可以扩展)
  • 将所有其他代码保留在现在的常规环境中,只需添加逻辑以与事件调度程序进行通信
  • 部署Socket.io作为您的websocket处理服务。它简化了服务器端和客户端上的所有Javascript逻辑,并以与IE5.5兼容的方式包装实时连接,优化降级服务器和客户端支持的技术 - 最近浏览器上的websockets,遗留系统上的长轮询或其他技术。

使用此解决方案,您可以使用相对较少的代码轻松实现如您所述的跨多个平台的完全实时响应的系统。

至于控制应用本身,如果您打算分发到应用商店,只需使用带有Phonegap的HTML5。