AngularJS:如何获得系统远程?
Posted
技术标签:
【中文标题】AngularJS:如何获得系统远程?【英文标题】:AngularJS: how to get system remote? 【发布时间】:2016-05-05 10:51:50 【问题描述】:请让我详细说明我的目标是什么
如何从 Windows 应用程序运行系统的 Angular.js 应用程序获取远程桌面连接。我的服务器是 Google App Engine。
到目前为止我的想法:
-
Windows 应用程序将截屏并发送到 Google App Engine Channel API。
Google App Engine 通道 API 将通知 Angular 应用并向其发送屏幕截图并显示。
这种方法的问题是成本高且速度慢。
请求
请推荐一些工具或api或制作屏幕共享应用程序的方法。
【问题讨论】:
谁能直接或间接提供帮助? 【参考方案1】:这不是您要寻找的答案,但可以通过任何方式阅读。
tl;dr;
您尝试做的不是 App Engine 用例,您真的不应该使用 App Engine 来实现这种解决方案。
长版:
正如您自己发现的那样,通道 API 对于您正在尝试做的事情会变得昂贵且缓慢。这是因为通道 API 根本无法将大量数据流式传输到客户端。它旨在向客户端发送定期更新,例如实时聊天或新闻行情的传入更新。最好的情况是您只通知客户端新内容,客户端从服务器请求这个新内容。因此,您可以将新屏幕截图的 URL 发送给客户端,然后客户端请求它。但是,当您流式传输桌面或视频时,这是非常不必要的,因为您想要通过这种流式传输获得尽可能多的更新。您不妨每隔几毫秒轮询一次。 使用屏幕截图来共享桌面是一种特殊的疯狂,因为数据“流”无法正确压缩,因此会比它必须的大得多。通常远程桌面系统使用与视频压缩算法非常相似的压缩算法,其中只传输前一个图片/帧的变化/差异,并且偶尔会有一个完整的关键帧。更多数据意味着您的流中有更多带宽和更多延迟。至少要尽量减少数据流,这一点非常重要。 大多数 App Engine 应用程序的目标是允许扩展到数千个并行连接。这是通过允许多个实例提供相同的内容并通过实施若干限制来实现的(例如前端的 60 秒请求截止日期/后端请求的 10 分钟、单个请求中的最大带宽使用量等),这些限制将大型任务分成小请求然后可以由大量应用程序引擎实例提供服务。相同的限制将不允许您为视频或远程桌面流式传输等内容创建长时间运行的连续数据流。如果您按照上述建议每隔几毫秒轮询一次,应用引擎会定期生成新实例,这会导致预热请求和进一步延迟。但行不通的事情已经够多了,这是应该行的一个例子:
流媒体服务器实际上是允许直接流式传输到客户端的服务器 流式服务器将其服务 URL 发布到您的应用引擎应用程序 您的 AngularJS 应用程序从应用引擎应用程序请求一个流 App Engine 告诉 AngularJS 应用程序来自上面的流服务器信息 客户端直接从服务器请求流这种方法不使用应用引擎作为数据的代理 - 因此您不必担心流数据。但是,它确实要求您的服务器直接在 Internet 上可用。
或者,有大量可用的应用程序/服务(以 twitch.tv 为例)允许桌面流式传输,而无需您编写一行代码。这样的流可以简单地嵌入到您的 Angular 应用程序中。由于这不是Software Recommendations,我不想在这里深入探讨这个问题。
【讨论】:
以上是关于AngularJS:如何获得系统远程?的主要内容,如果未能解决你的问题,请参考以下文章