带有服务器推送的移动和桌面 Web 应用程序
Posted
技术标签:
【中文标题】带有服务器推送的移动和桌面 Web 应用程序【英文标题】:Mobile and Desktop Web Application with Server Push 【发布时间】:2017-02-24 22:45:14 【问题描述】:我希望构建一个混合的移动和桌面 Web 应用程序,能够向客户端执行服务器推送,但需要一些关于我应该研究或采用的优选技术和路线的建议。什么是处理服务器从后端推送回客户端层的现代且简单的方法?我还想补充一点,我没有使用过许多可能在这种情况下有用的前端技术,但如果他们能完成工作,我很想尝试一些。
这是一个粗略的图表,显示了我想要实现的场景。更多详细信息和所需流程如下。
1. Desktop-1 是第一个登录的,设置了一些设置并控制下一步操作。 2. 当未来的客户端登录时,其他人会通过服务器推送得到通知,并且 UI 会更新以反映这一点。已加入的其余客户端现在正在等待 Desktop-1 执行的操作。 3. Desktop-1 执行发送到后端的操作。 4. 后端向所有其他客户端发送更新数据的推送消息,以便他们可以刷新反映新当前状态的 UI。 5. 下一个执行动作的是尚未轮到的客户之一,并且该过程重复。 类似于回合制游戏。 • 通过移动/桌面浏览器访问。 • 一次只有一个客户端可以控制并能够发出操作。 • 我预计不会有大量客户(大约 10 个),但学习任何可以扩展的新技术都会很有趣。 • 简单的用户界面——对外观或用户界面框架没有真正的偏好。
到目前为止我所看到的可能使我的任务可行的内容: • 之前做过一些 GWT 应用程序,Vaadin 看起来是一个有趣且合适的选择。也许为移动设备和桌面提供常规的 TouchKit UI。 • Spring Boot、Bootstrap、带有 WebSockets 或某些框架的 Java 后端 -- Errai/Atmosphere。
【问题讨论】:
【参考方案1】:我将从 Vaadin 的角度回答这个问题:
Vaadin 非常适合这一点,因为它开箱即用地处理您的所有要求。
使用正确的 UI 主题和布局,您可以获得针对不同客户端类型的响应式 UI。
服务器推送已经存在,具有多级回退,具体取决于客户端的功能。
实现自己(或使用插件)唯一需要做的就是将消息从 Desktop1“广播”到所有其他人,反之亦然。 为此,存在一些事件总线样式的插件,允许不同的客户端一起通信。
对于一些数百名用户来说,扩展并不是一个大问题,除非你在服务器上存储了太多关于用户会话的信息。 但这可能是一个带宽问题,当您必须根据消息大小将消息发布到 499 个其他客户端时。 测试没问题,但是向 499 客户“广播”视频往往很慢。
【讨论】:
以上是关于带有服务器推送的移动和桌面 Web 应用程序的主要内容,如果未能解决你的问题,请参考以下文章
使用SignalR从服务端主动推送警报日志到各种终端(桌面移动网页)
带有 Web API 延迟的 Android 推送通知和 SignalR 通知