如何使用服务器发送的事件广播到使用在客户端JavaScript和Java Server端

问题描述:

我正在使用中,我要广播消息给一些特定用户的服务器发送事件编写Web应用程序代码的多个用户。我想在客户端使用eventsource,在服务器端使用球衣广播者。如果他们以任何其他方式来实现它。 由于在应用程序中使用的tomcat版本和长轮询,Websockets在我的应用程序中不支持。如何使用服务器发送的事件广播到使用在客户端JavaScript和Java Server端

任何人都可以与工作代码共享示例。 在此先感谢

+0

http://stackoverflow.com/questions/15713080/html5-server-sent-events-and-multiple-clients-without-using-comet。几乎相同的要求,但没有那么复杂。只有多个用户登录到某个视图,我应该能够向某些特定用户发送通知。我不能使用气氛或任何第三方框架。 – Anshul

根据您的使用情况的,另一种解决方案是使用一个EventSource的和不同的消息为不同类型的用户。例如,标准用户只能收听«标准»类型的留言,特殊用户只能收听«特殊»类型的留言。

在这种情况下,它是由客户端来过滤/区分根据种类的用户收听哪些事件。但由于只有一个事件源,因此您可以让客户端应用程序可以侦听这两种消息。

因此,选择一个或另一个解决方案确实取决于用例。

我已经在同一个github上提交了这个解决方案。解决方案1被标记为“v1”,解决方案2被标记为“v2”。

+1

你可以分享github网址 – Anshul

+1

我的其他帖子中的github链接没有改变:它是[那里](https://github.com/streamdataio/demo-sse-broadcast)。 – ctranxuan

也许,我看到的解决办法,是用两种不同的EventSource来解决特定的用户和标准用户。这意味着两个不同的网址。 在示例代码there中,我使用查询参数来区分这两种用户,但您也可以使用不同的路径(取决于您的用例)。

这通常是我们的用户想要通过streamdata.io(streamdata.io基于SSE)将他们的JSON API转换为推送API时的情况(声明:我是developer @ streamdata.io)。

使用streamdata.io JS SDK,您还可以使用标题区分用户。请注意,SSE不支持自定义标题:您需要使用查询参数。

如果说你的用例依赖于一个JSON API,你要推的数据,你可以使用streamdata.io)。

+0

我想在Tomcat 8.0中运行这个例子。但我得到404错误。然后我说 com.sun.jersey新泽西州的servlet 1.19 之后,我收到500错误。你能检查我做错了什么吗? – Anshul

+0

该示例使用SpringBoot,它使用自己的嵌入式Tomcat 8来运行该应用程序。所以,执行jar会启动一个嵌入式Tomcat 8.但是如果你想在Tomcat 8中部署一个war,你需要做一些[修改](http://docs.spring.io/spring-boot/docs/ current/reference/htmlsingle /#howto-create-a-deployable-war-file)并用适当的eventsource url更新'index.html'。我在github回购中做了一个分支'tomcat-deployment'。只需运行'mvn clean install'来生成战争并将其部署到Tomcat中。请参阅README.md。 – ctranxuan

+0

你可以提供tomcat-部署分支的链接 – Anshul