如何使用服务器发送的事件广播到多个用户使用javascript在客户端和java在服务器端
How to use server sent event to broadcast to multiple users using javascript at client end and java at server end
我正在编写一个使用服务器发送事件的web应用程序代码,我想向一些特定用户广播消息。我想在客户端使用事件源,在服务器端使用球衣广播器。如果他们有其他方法来实现它。Websockets不支持在我的应用程序由于tomcat版本和长轮询,我不能在应用程序中使用。
任何人都可以与工作代码共享示例。提前感谢
我看到的解决方案可能是使用两个不同的EventSource来处理特定用户和标准用户。这意味着两个不同的url。在这里的示例代码中,我使用查询参数来区分两种用户,但是您也可以使用不同的路径(取决于您的用例)。
当我们的用户想要通过流数据将JSON API转换为推送API时,通常会这样做。io (streamdata。(免责声明:我是一个开发人员@streamdata.io)。
使用流数据。io JS SDK,你也可以使用头信息来区分你的用户。注意,SSE不支持自定义报头:您需要使用查询参数。
如果你的用例依赖于JSON API,并且你想要推送数据,你可以使用流数据。io;)。
根据您的用例,另一种解决方案是为不同类型的用户使用一个EventSource和不同的消息。例如,标准用户只能收听类型为«standard»的消息,而特殊用户只能收听类型为«special»的消息。
在这种情况下,由客户端根据用户类型来过滤/区分要侦听哪些事件。但是由于只有一个事件源,你可以让客户端应用程序可以监听这两种类型的消息。
因此,选择一个或另一个解决方案实际上取决于用例。
我已经在同一个github上提交了这个解决方案。解决方案1标记为«v1»,解决方案2标记为«v2»。
你可以在服务器端创建不同的事件,然后客户端只会监听与他们相关的事件。
服务器端echo "event: special_user'n";
$msg1="This is special user";
echo 'data: {"msg": "' . $msg1 . '"}';
echo "'n'n";
echo "event: normal_user'n";
$msg2="This is normal user";
echo 'data: {"msg": "' . $msg2 . '"}';
echo "'n'n";
特殊用户客户端
var evtSource = new EventSource("sender.php");
evtSource.addEventListener("special_user", function(e) {
var obj = JSON.parse(e.data);
var r_msg = obj.msg;
普通用户客户端
var evtSource = new EventSource("sender.php");
evtSource.addEventListener("normal_user", function(e) {
obj = JSON.parse(e.data);
var r_msg = obj.msg;
- 从 DOM 中删除/删除 Javascript 用户定义的数组
- Ajax/Javascript用户状态更新
- javascript用户输入最多的20个数字
- Javascript 用户 ID 代码
- PHP/JavaScript 用户信息收集
- hta文件中的javascript用户配置文件相对路径
- 使用Javascript用户输入修改CSS
- 如何将Javascript用户的用户数据返回到Django
- 跨域javascript用户验证
- JavaScript用户脚本本身不运行
- HTML Imagemap与PHP和Javascript /用户可以选择颜色
- 为非JavaScript用户嵌入Youtube视频
- JavaScript用户输入URL不持有我的域
- 表单动作改变javascript用户选项选择
- Asp.net: c#/javascript用户在提交之前需要确认
- 非javascript用户的非javascript弹出窗口
- JavaScript -用户的安全覆盖变量
- 我如何保护我的PHP cookie从JavaScript用户的页面
- Javascript用户代理按浏览器版本号重定向
- Javascript用户的输入验证