将字符串从 JavaEE 后端推送到 Javascript 客户端的任何简单方法?
Posted
技术标签:
【中文标题】将字符串从 JavaEE 后端推送到 Javascript 客户端的任何简单方法?【英文标题】:Any simple way to push Strings from JavaEE BackEnd to Javascript-Client? 【发布时间】:2018-10-18 12:27:37 【问题描述】:在我的项目中,我们使用 JavaEE(CDI,Hibernate)-Backend 部署在带有 AngularJS-Frontend 的 WildFly-Server 上。
是否有任何简单的方法可以将消息从war
文件中推送到 javascript 客户端?
谢谢。
【问题讨论】:
网络套接字?你是这样想的吗?其他方式只有客户端可以推送 由于你的客户端是Javascript,你可以设置一个时间间隔来检查(拉)服务器端。 您的 java EE 应用程序有 servlet 吗?如果您可以访问一个生成任何类型文本的 URL,您可以发出一个 Angular 的 HTTP 请求来调用它并获取该文本。 看看***.com/a/11277751/945214 【参考方案1】:正如您提到的 JavaEE:Websockets 自版本 7 起成为 EE 规范的一部分 - 检查 https://docs.oracle.com/javaee/7/tutorial/websocket.htm。
规范的 Websocket 部分有点初级,例如您必须自己实现主题、广播或重新连接机制(至少我在规范中找不到这些功能)。如果您需要这些功能,不妨看看 socket.io (https://socket.io/),它可以轻松集成到 Angular (https://tutorialedge.net/typescript/angular/angular-socket-io-tutorial/) 中。
如果轮询(在 socket.io 中也作为后备实现)也是一种选择,则取决于您喜欢什么(以及内容应该有多复杂)。 EE 规范充满了具有强大返回内容能力的技术:Servlet、JSF、JSP、JAX-RS、JAX-WS。
只是为了澄清:使用这些解决方案推送或轮询信息仅在客户端在浏览器中打开您的网络应用程序(即使在后台)时才有效。如果您还想在他们不访问您的应用时推送信息,您必须检查解决方案,例如 Google 的 Web 推送通知 (https://developers.google.com/web/fundamentals/push-notifications/)。
希望这会有所帮助。
【讨论】:
这种方式是否也允许发布到多个客户端? 如上所述,使用EE Websockets(JSR356)时必须自己实现。如果您使用 socket.io,它是开箱即用的,并且还有其他概念,例如“房间”和“命名空间”(socket.io/docs/emit-cheatsheet)。以上是关于将字符串从 JavaEE 后端推送到 Javascript 客户端的任何简单方法?的主要内容,如果未能解决你的问题,请参考以下文章