从服务器端应用程序向客户端推送消息?

2024-03-26

我有一个基于 javascript 的客户端,当前正在轮询 .NET Web 服务以获取新内容。虽然轮询有效...我对这种方法不满意,因为我正在使用系统资源并在没有接收任何更改时产生开销。

我的问题是如何通知我的客户有新内容可供显示?我对实施此解决方案所必须使用的任何其他技术持开放态度。


首先,民意调查是可行的方法。您可以使用 Flash、Silverlight 或 Comet 来实现 -http://en.wikipedia.org/wiki/Comet_(编程) http://en.wikipedia.org/wiki/Comet_(programming)它可以为您打开 TCP 连接以接收通知。 网页本身无法保持套接字打开,因此无法直接通知 Web 客户端。

[Edit]但是想一想,一次可以有多少个客户端与一台服务器保持 tcp 连接?对于较大的系统,您很快就会用完可用的套接字,因为有 65k 个可用端口。
您的服务器可以处理多少并发连接取决于您的硬件资源。如果你有足够的内存和CPU,你应该能够处理~100k甚至更多。但是,如果每个请求都通过 tcp/ip 访问数据库或某些其他资源,则可能会限制每个 ip 可用的端口数 (65k)。您还应该让推送请求针对单独的域,因为浏览器通常限制每个域有两个并发连接,这样就不会干扰正常的页面加载。

使用轮询结合前面的缓存服务器是一个很好的解决方案。您可以在服务器上使用逻辑来更新每个客户端的缓存,从而减少每次轮询的负载。您可以为在 X 分钟内登录/轮询的用户更新缓存,以进一步减少缓存更新。对我来说,从技术角度来看,实施拉动比拉动更容易。

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

从服务器端应用程序向客户端推送消息? 的相关文章

随机推荐

  • linux下用boost::thread创建boost::asio工作线程

    我在 Windows 下使用 boost 一段时间了 现在需要迁移几个现有的应用程序以在 Ubuntu 12 上运行进行演示 该应用程序创建两个工作线程 一个用于记录传入的 UDP 数据 另一个用于侦听单独的端口并将该数据打印到屏幕上 我已
  • 有没有办法从 Excel VBA 中的轴导出图表?

    我有许多用于操作 Excel 图表的通用 VBA 宏 例如 将一个图表叠加在另一个图表之上 重新缩放轴 或者通过键入公式向图表添加自定义曲线 例如 y x 2 1 在文本框中 这些宏是不带任何参数的子宏 我将它们存储在 xlam 加载项中
  • 包含按位与 (&) 或按位异或 (^) 的运算是否有等价的十进制?

    考虑以下表达式 其中两个操作数都是十进制 a b or a b 我知道运算符对操作数的二进制数字执行什么操作 因此我知道答案如何 的a b or a b被计算 我不知道这些运算是否可以转换为十进制形式 例如 我们可以说a lt
  • 将 std::unique_ptr 保存为不完整类型的类的构造函数定义之间的差异

    下面的代码编译正常 参见下面的 Golbolt 链接 include
  • Ruby:递归方法

    def reverse append arr n return arr if n lt 0 reverse append arr n 1 arr lt lt n arr end reverse append 4 gt 0 1 2 3 4 我
  • 我怎样才能在edittext中的每个字符下划线?

    我正在尝试在android中编写一个像刽子手这样的猜词游戏 假设这个词是 苹果 我想显示 5 个下划线来告诉玩家该单词有 5 个字符长 并且它们应该如下显示 填充 我想不出有什么办法可以轻松做到这一点 我发现this https stack
  • MaterialComponents 中 android:background 的替代品是什么?

    问题 android background 在 MaterialComponents 中没有生效 在我的项目中 我使用的是 AppCompat
  • 根据项目更改列表视图行的颜色

    我想根据列表视图的状态更改其颜色 我有两个状态 我想将 待处理 更改为红色 将 完成 更改为蓝色 这怎么可能 我不知道 因为这是我第一次在列表视图中执行此操作 也许是这样的 Dim ListView1 As ListView New Lis
  • 如何在 iOS 上从相机胶卷中检索最新的照片?

    我很难弄清楚如何在没有用户干预的情况下以编程方式检索相机胶卷中的最新照片 需要明确的是 我不想使用图像选择器 我希望应用程序在打开时自动抓取最新的照片 我知道这是可能的 因为我见过类似的应用程序可以做到这一点 但我似乎找不到任何相关信息 一
  • 捕获父容器上的单击事件,但不捕获子容器上的单击事件

    用下面的例子 HTML div class parent div class child div div CSS parent align items center background blue display flex justify
  • 如何在 Flutter 中使用另一个提供程序内部的提供程序

    我想创建一个具有以下功能的应用程序authentication service根据用户角色具有不同的权限和功能 例如消息 所以我创建了一个Provider用于用户和登录管理 另一个用于用户可以看到的消息 现在 我想在用户登录时获取消息 一次
  • 实体框架 - 对唯一索引进行 UPSERT

    我对我的问题进行了一些搜索 但找不到任何真正有帮助的东西 所以我的问题 困境仍然是这样的 我知道 mysql 数据库有一个独特的索引系统 可用于使用以下格式在同一查询中插入 更新 insert into t a b c values 1 1
  • 在 AWS Cognito Oauth2 令牌中包含用户详细信息

    我正在将 AWS cognito 与 NodeJS 后端 API 结合使用 并希望在访问令牌返回中包含用户详细信息 oauth2 令牌用户池客户端应用程序中定义范围的端点 另外如果我使用管理员启动验证API 无法将范围包含在返回访问令牌中
  • Pandas date_range - 减去 numpy timedelta 给出奇怪的结果,时间变得不是 0:00:00

    我正在尝试使用 pandas date range 功能生成一组日期 然后我想迭代这个范围并从每个日期中减去几个月 确切的月份数在循环中确定 以获得新的日期 当我这样做时 我得到了一些非常奇怪的结果 MVP get date range d
  • 如何从 int 转换为泛型 Integer?

    我对 Java 比较陌生 并且习惯了 C 中的泛型 因此在处理这段代码时遇到了一些困难 基本上 我想要一个通用方法来通过按键获取存储的 Android 首选项 并且此代码虽然丑陋 但适用于布尔值 但不适用于整数 当它因 ClassCastE
  • 如何使用 Postman 查询 Exchange EWS?

    使用Postman 如何查询本地 Exchange 2016 EWS 我有 EWS 的组织 URLhttps my organization net EWS Exchange asmx 我们使用的是 Exchange 2016 没有 Off
  • 在项目之间共享自定义 PHP 代码的最佳方式

    我正在开发一个分布式环境 主要是使用 PHP 我的很多项目共享一些相同的代码 例如我的日志代码 基于 log4php 但添加了一些自定义内容 我可以在每个项目中复制粘贴此代码 但自然地 如果我更改其中的任何内容 我需要将其重新粘贴到各处并
  • 尝试创造。初始化并格式化VHD磁盘

    一些背景 我在实验室环境中工作 遇到了许多问题 需要创建 VHD 并将其附加到虚拟机以进行压力测试 我想出了一个脚本 允许用户使过程尽可能简单 如下 vms Get VM val 0 Write Host This script is se
  • 计算月份统计数据

    我有一个捐款表 我试图计算每个月的总金额 几个月没有任何捐款 我希望结果返回 0 这是我当前的查询 Donation calculate sum amount conditions gt created at gt Time now pre
  • 从服务器端应用程序向客户端推送消息?

    我有一个基于 javascript 的客户端 当前正在轮询 NET Web 服务以获取新内容 虽然轮询有效 我对这种方法不满意 因为我正在使用系统资源并在没有接收任何更改时产生开销 我的问题是如何通知我的客户有新内容可供显示 我对实施此解决