websocket - 网站远程控制

标签 websocket long-polling server-push

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

我们有一个马视频流媒体网站,如果我们的客户可以在智能电视上观看流媒体并通过 iphone/android/wp 进行控制,这对我们的客户来说将是一个很棒的功能。

来自瑞士的 wilmaa.com 还为智能手机提供了远程控制,以便在智能电视/网络浏览器上浏览我的网站。

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

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

最佳答案

要做到这一点,您需要某种能够克服 HTTP 固有缺陷的“推送”服务,即它始终是“仅拉动”系统 - 客户端发起请求,服务器应答。在本例中,您希望将事件从服务器推送到客户端。

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

几个月以来,还可以采用新的 HTML5 技术,该技术现已在所有主要浏览器上稳定实现:Websockets。该技术允许服务器将常见的拉取请求升级为完全双向连接,从而允许浏览器和服务器之间进行实时通信。遗憾的是,“常规”网络服务器(例如 Apache)并不是真正为这种逻辑构建的,尽管可以使用 Ratchet 等框架来模拟它。对于系统的实时部分,大多数网站(包括此处的 Stack Overflow)当前选择的平台是 node.js - 服务器端异步 Javascript。

针对您的情况我会推荐什么:

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

通过此解决方案,您可以使用相对较少的代码轻松实现一个在多个平台上具有完全实时响应能力的系统,正如您所描述的。

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

关于websocket - 网站远程控制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16372771/

相关文章:

php - 在php中手动创建一个HTTP Response对象,发送,用Javascript捕获

javascript - WebSockets 和文本编码

websocket - 如何使用okhttp3.Interceptor来捕获okhttp3 WebSocket网络事件?

c# - WCF 暂停调用

ios - PubNub 长轮询与套接字 - 移动电池生命周期

Android:在线测试推送通知(Google Cloud Messaging)

.net - Windows Mobile/Windows CE 上的服务器推送/HTTP 流

javascript - websocket 服务器,存储数据

javascript - 无法连接到 wss://(建立连接时出错:net::ERR_CONNECTION_CLOSED)

jquery - 如何停止 jQuery 长轮询请求?