服务器发送事件如何向特定客户端发送响应

2024-02-17

在服务器发送事件中,它总是向所有客户端发送相同的响应。但我想知道的是,如何使用 java 将响应发送到只有一个客户端。

这是我在 sw.js (SSE) 内部定义的事件

var eventSource = new EventSource("HelloServlet");
eventSource.addEventListener('up_vote',function(event){
    console.log("data from s" , event.data);
    var title = event.data;
    self.registration.showNotification(title, {
          'body': event.data,
          'icon': 'images/icon.png'
        })
});

我只想向特定用户显示此通知。不适合所有人。 Hello Servlet 是我的 servlet,它包含这个,

response.setContentType("text/event-stream");   
        response.setCharacterEncoding("UTF-8");
        PrintWriter writer = response.getWriter();
        String upVote = "u";
        String downVote = "d";
        for(int i=0; i<10; i++) {
            writer.write("event:up_vote\n");
            writer.write("data: "+ upVote +"\n\n");
            writer.write("event:down_vote\n");
            writer.write("data: "+ downVote +"\n\n");
            writer.flush();
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
        writer.close();

您只向所有客户端发送相同消息的原因是因为您只有一个它们都连接到的通道。这EventSource只是一个GET请求您保持开放状态。与任何 get 请求一样,您可以通过多种方式将其定制给特定用户。

var eventSource = new EventSource("HelloServlet?username=their-user-name");

在此示例中,您将使用查询字符串为每个人创建一个唯一的频道。然后,您需要服务器端的逻辑来根据不同的内容发送不同的内容username多变的。

您还可以使用会话。因此您可以将当前代码保留在客户端上。

var eventSource = new EventSource("HelloServlet");

但在服务器端,您需要检查会话,然后根据会话信息发送不同的内容。

这有帮助吗?

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

服务器发送事件如何向特定客户端发送响应 的相关文章

  • Javascript Firefox - 如果 @import 存在于样式表中,则无法查询 cssRules - bug 或预期行为?

    如果 import 存在于 css 样式表中 我无法查询 cssRules 是否符合网络标准 或者知道 Firefox 的限制 注意 我正在从同一域导入 css 文件 var style rules document styleSheets
  • javascript获取上周的第一天和最后一天[重复]

    这个问题在这里已经有答案了 我想用 javascript 获取上周的第一天 星期一 和最后一天 星期日 我已经检查过其他主题 但它不起作用 我还需要处理前一周是否是两个不同的月份 我正在使用此代码 但最后一个星期日是 06 03 2014
  • 这个特定的 ReactJs 代码是如何执行的初学者问题?

    我是初学者 正在阅读大量代码 现在我想知道下面的代码我明白这段代码在做什么 我需要澄清的是代码流程 当我运行它时 我看到图像正在加载 React 是从上到下执行代码吗 占位符图像异步获得正确的图像 但会App如果需要时间 组件会开始渲染但没
  • 了解执行模型和事件循环

    我读过很多关于JavaScript单线程执行模型 事件循环和事件队列的文章 但有一件事尚不清楚 我创建了一个小提琴来说明我的问题 http jsfiddle net yzpmf67f http jsfiddle net yzpmf67f
  • GCM(Google 云消息传递)是否需要 Google 帐户?

    我需要编写一个简单的应用程序来获取推送通知 我使用 GCM 它使用 Google Play 服务来获取信息 我的问题是 要访问 GCM 是否需要 Google 帐户 我可以使用其他电子邮件帐户来识别设备吗 有没有其他方法可以获取另一个电子邮
  • Jquery 动画与 CSS 浮动

    我的代码有问题 宽度似乎可以工作 但浮动没有 这里是 这是一个例子 http jsfiddle net v82ck http jsfiddle net v82ck 问题 悬停时菜单上的浮动属性不会改变 我希望每个菜单元素下方的线在悬停该菜单
  • jquery/javascript 处理后移至命名锚点

    在进行一些 jquery 处理后 如何将焦点移动到同一页面上的不同部分 名为锚点 函数 ABC 进行一些处理 然后 我需要将用户移动到同一页面上的某个部分 页面下方 您可以使用下面的代码将屏幕滚动到 div 只需更改选择器以匹配您要滚动到的
  • JavaScript 中的 Promise.all:如何获取所有 Promise 的解析值?

    我编写了以下node js文件 var csv require csv parser var fs require fs var Promise require bluebird var filename devices csv var d
  • 是否可以用 json 进行表达式/计算?

    我使用出色的 json server 作为应用程序的后端 它对于访问自定义端点以检索一些数据非常有用 但是如果它允许我进行计算 表达式以便我也可以模仿后端行为 那将会非常有用 以这个数据结构为例 products name football
  • 在 AngularJS 中覆盖运行时的依赖关系

    我有一个服务叫 doggedHttp 它公开了与 http 现在我想创建一个 doggedResource服务是有角度的 resource服务之上 doggedHttp代替 http 换句话说我想注入 doggedHttp as the h
  • 如何滚动到 jQuery Mobile 中的页面元素?

    我有一个很长的 jQuery 移动页面 并且想在页面加载后滚动到该页面中间的元素 到目前为止 我已经尝试了一些事情 最成功的是 jQuery document bind mobileinit function var target if t
  • 避免 AngularJS 部分视图在 IE 中缓存

    我正在开发一个 ASP NET MVC 应用程序 它也有一些 angularJS 我有一个主页 其中有不同的选项卡 当您单击它们时 它们会加载角度部分视图 主页是这样的 div class widget div div class widg
  • 使用 test() 通过正则表达式进行信用卡验证

    我正在尝试完成一些作业 看来这本书可能做错了 我有一个简单的 html 页面 允许用户在我们的例子中选择信用卡 美国运通卡 然后 用户输入一个数字并根据正则表达式评估该数字 我的问题最终是当 test 计算它返回的数字时是布尔值还是字符串
  • Firefox OS 后台服务

    我想构建一个应用程序 用户可以通过它输入一些设置 并且应用程序将启动后台服务来根据这些设置执行一些任务 我只想在模拟器中运行应用程序和后台服务 我知道它需要 认证 模式才能运行后台服务 但我现在不考虑在 Firefox Marketplac
  • 如何获取 svgElement 的比例?

    我正在研究 svg div style width 300 height 300 div
  • 设计 Javascript 前端 <-> C++ 后端通信

    在我最近的将来 我将不得不制作一个具有 C 后端和 Web 前端的系统 要求 目前 我对此了解不多 我认为前端将触发数据传输 而不是后端 所以不需要类似 Comet 的东西 由于在该领域的经验可能很少 我非常感谢您对我所做的设计决策的评论
  • 检查 href 中是否存在 jQuery 中的查询字符串

    我目前有一段 jQuery 用于附加带有一些位置信息的 URL jQuery a attr href function return this href location 123 abc 我的问题是大多数链接都有一个 其中使用上面的 就可以
  • ERR_IMPORT_ASSERTION_TYPE_MISSING 用于导入 json 文件

    这段代码运行良好 我不知道是因为我升级到 Node 17 还是什么原因 但现在我明白了 TypeError ERR IMPORT ASSERTION TYPE MISSING Module file Users xxxxx code pro
  • 垃圾收集器不适用于 NodeJS / Chrome 中的类型化数组

    我最初将其记录为原项目中的一个问题 https github com nodejs help issues 3590 它立即转移到帮助主题 没有很好的解释 所以现在我想在这里提问 如果我们在 NodeJS v14 v16 v17 中运行以下
  • 如何在odoo中重写js函数

    我想加载 shop checkout url 函数是 odoo define change info order website sale change info order function require use strict oe w

随机推荐

  • 将 PHP 字符串剪短

    你会如何把字符串剪短 这样它就不会进入 div 标签中的下一行例如我的message字符串包含以下内容 我们更喜欢可以回答的问题 而不仅仅是讨论 提供详细信息 写得清楚 简单 如果您的问题与此网站有关 请在元上提问 我想最好将其显示为 我们
  • 安装 hunspell 包

    我期待使用 pip 安装 hunspell 包 但它会抛出以下错误 Collecting hunspell Using cached hunspell 0 4 1 tar gz Building wheels for collected p
  • Ubuntu 18.04 服务器(Rails 6.0)上的“生产”环境缺少“secret_key_base”,尝试了多个主题

    这个话题有一个SOLUTION嵌入在最后 PROBLEM 我第一次在 Ubuntu 18 04 上的 VPS 上部署 Rails 应用程序 与 Nginx 一起 我遵循了很好的教程Gorails https www youtube com
  • 更改 HttpWebRequest 实例的 Uri?

    我有一个在事件中拦截的 HttpWebRequest 实例 我想在发送请求之前编辑 url 但我找不到执行此操作的方法 属性 RequestUri 是只读的 我想了几种方法 但似乎找不到可行的解决方案 使用反射来设置值 创建一个新请求 然后
  • Python - 在迭代字典列表时如何处理丢失的键? [复制]

    这个问题在这里已经有答案了 在下面的示例中 我迭代字典列表 并将 年龄 保存在列表中 然而 第二个字典没有键 年龄 在这种情况下 我希望将 null 值保存在列表中 关于如何实现这一目标有什么建议吗 my list age 0 name A
  • CHANGEM 的优雅矢量化版本(替代值) - MATLAB

    在Matlab 2012b中 有一个changem函数允许您用一组键指定的其他值替换矩阵的元素 替换数据数组中的值 http www mathworks com help map ref changem html jsessionid 7b
  • 来自另一个 bigDecimal.toString() 的 new BigDecimal 是否始终等于?

    在Java中 来自另一个bigDecimal toString 的new BigDecimal总是等于吗 例如 BigDecimal a new BigDecimal 1 23 BigDecimal b new BigDecimal a t
  • UIViewController 动画时方向错误

    为了使用 UISplitViewController 我在从一个视图控制器导航到另一个视图控制器时替换了窗口根控制器 为了在执行此操作时获得一些不错的过渡 我使用了如下的缩放效果 MyOtherViewController controll
  • SocketServer绑定多个服务器

    我正在尝试使用 python 的 SocketServer 模块绑定多个服务器 import SocketServer from SocketServer import BaseRequestHandler class HTTPSERVER
  • MYSQL子集操作

    有没有办法实现类似的目标 SELECT FROM tb values WHERE value1 value2 value3 SUBSET OF SELECT value FROM tb value WHERE isgoodvalue tru
  • 在 Android Studio 上运行的 HTC One M8

    有谁使用HTC One M8设备开启安卓工作室 我的问题是 IDE 无法识别它 我杀死了 AVD 重新启动了 IDE 几次 拔插了设备 但仍然无法识别 HTC One M8 与 Android Studio 配合使用的要求是 安装 HTC
  • 是否可以获得鼠标按钮 4、5 等?

    简而言之 有没有办法在 JavaScript 中检测额外的鼠标按钮按下情况 它没有与其余的鼠标输入一起记录 所以我猜它不在标准实现中 有没有什么方法 例如库 可以启用额外的鼠标按钮 是的 你可以这样做 检查一下鼠标事件 button htt
  • 使用属性文件的配置创建未知数量的 Bean

    我的情况是 我有一个属性文件来配置未知数量的 bean rssfeed source 0 http feed com rss news xml rssfeed title 0 Sample feed 1 rssfeed source 1 h
  • 如何在 Android 中使用 Canvas.drawText 绘制跨度字符串

    我想画一个SpannedString to a Canvas SpannableString spannableString new SpannableString Hello World ForegroundColorSpan foreg
  • XSD:在扩展的情况下,带有##other命名空间的通配符的引用命名空间

    我有一个带有目标命名空间 ns1 的 XSD 架构 它定义了以下类型
  • OCUnit 中的简化断言

    我刚刚开始使用 OCUnit 发现断言有点麻烦 在 JUnit 中 我可以编写一个测试来比较数字 如下所示 这个测试显然会失败 但这显示了我可以为两个数字编写的漂亮 简单的断言以及我得到的反馈 预期 但实际是 代码很少 到目前为止我在 XC
  • PhantomJS 是否支持 ES6 来为爬虫和机器人提供 angularjs 应用程序?

    我正在尝试使用ajax seo https github com liuwenchao ajax seo让 Angularjs 应用程序从 PhantomJS 网络服务器提供 html 编译内容 但它没有呈现完整的页面 它只是给出以下响应
  • 删除二值阈值图像中具有连接边缘的小破折号

    我有一个二值阈值图像 我想从图像中删除小破折号 与圆相连 我的主要重点是提取圆弧 原始图像 输出图像为 因为我们有一个空心形状 所以我采取了懒惰的方法 这是解决问题的平滑方法 相对简单 检查从内部到外部的距离 但它会丢失细节 因为它是在简单
  • SSL_accept 与阻塞套接字

    我用 SSL 做了一个服务器blocking插座 当我使用 telnet 连接 因此它不进行握手 时 SSL accept 无限期地阻止并阻止每个新的握手 接受 以及根据定义的新连接 我怎样才能解决这个可怕的问题 为什么不在调用之前将套接字
  • 服务器发送事件如何向特定客户端发送响应

    在服务器发送事件中 它总是向所有客户端发送相同的响应 但我想知道的是 如何使用 java 将响应发送到只有一个客户端 这是我在 sw js SSE 内部定义的事件 var eventSource new EventSource HelloS