AngularJS:如何让系统远程
本文关键字:系统 AngularJS | 更新日期: 2023-09-27 18:32:24
请让我详细说明我的目标是什么
如何从我的 Angular.js 应用程序运行 Windows 应用程序系统获取远程桌面连接。我的服务器是Google App Engine。
到目前为止,我所想到的:
- Windows应用程序将截取屏幕截图并发送到Google App Engine Channel API。
- Google App Engine Channel API 将通知 Angular 应用,并向其发送屏幕截图并显示它。
这种方法的问题在于它非常昂贵且缓慢。
请求
请建议一些工具或api或制作屏幕共享应用程序的方法。
这不是您正在寻找的答案,但请以任何一种方式阅读。
博士;
您尝试执行的操作不是 App Engine 用例,您确实不应该使用 App Engine 来实现此类解决方案。
长版本:
- 正如您自己发现的那样,通道 API 对于您尝试做的事情来说将变得昂贵且缓慢。这是因为通道 API 根本无法将大量数据流式传输到客户端。它旨在向客户端发送定期更新,例如实时聊天或新闻自动收报机的传入更新。最好的情况是,您只通知客户端新内容,客户端从服务器请求此新内容。因此,您可以将新屏幕截图的URL发送给客户端,客户端会请求它。当您流式传输桌面或视频时,这是非常不必要的,因为您想要的这种流式传输是尽可能多的更新。您不妨每隔几毫秒轮询一次。
- 使用屏幕截图共享桌面是一种特殊的疯狂,因为数据"流"无法正确压缩,因此会比它必须的大得多。通常远程桌面系统使用的压缩与视频压缩算法非常相似,其中只会传输前一张图片/帧的变化/差异,并且偶尔会有一个完整的关键帧。更多的数据意味着流中的带宽和延迟更多。至少尝试尽可能减少数据流非常重要。
- 大多数 App Engine 应用的目标是允许扩展到数千个并行连接。这是通过允许多个实例提供相同的内容并强制执行多个限制(例如前端请求的 60 秒请求截止时间/后端请求的 10 分钟、单个请求中的最大带宽使用等)来实现的,这些限制将大型任务切成小请求,然后可以由大量应用程序引擎实例提供服务。相同的限制将不允许你为视频或远程桌面流等内容创建长时间运行的连续数据流。如果您按照上述建议每隔几毫秒轮询一次,应用引擎将定期生成新实例,这会导致预热请求和进一步延迟。
但是足够多的东西不起作用,这是应该起作用的一个例子:
- 流媒体服务器实际上是允许直接流式传输到客户端的服务器
- 流式处理服务器将其服务 URL 发布到您的应用引擎应用程序
- 您的 AngularJS 应用程序从应用程序引擎应用程序请求流
- App Engine 告诉 AngularJS 应用程序上面的流媒体服务器信息
- 客户端直接从服务器请求流
这种方法省略了应用引擎作为数据的代理 - 因此您不必担心流数据。但是,它确实需要您的服务器直接在互联网上可用。
或者,有大量的应用程序/服务(twitch.tv 举一个例子)可用,它们允许桌面流式传输,而无需您编写任何代码。这样的流可以简单地嵌入到你的 Angular 应用程序中。由于这不是软件建议,我不想在这里更深入地讨论这个问题。