.net - 如何在不轮询的情况下通知我的 JS 客户端?

标签 .net javascript ajax notifications polling

上下文: 从我的 javascript Web UI 中,我启动了一个在 .NET2.0 后端执行的长时间运行(几分钟)的操作。当长时间运行的操作并行运行时,调用会立即返回操作 ID。这些操作不是 CPU 密集型的,但进行缓慢的网络调用。操作完成后,我想在 Web UI 中查看结果。

问题:工作完成后如何通知客户?

我考虑过的选项:

选项 1:我直接从 JS 异步启动长时间运行的操作,我希望返回值是最终结果而不是操作 ID。我的 AJAX 库处理一切,生活看起来非常轻松整洁。问题是在服务器端该线程是一个 ThreadPool 线程,我现在将其锁定了几分钟。即使有足够的处理能力,您也不需要太多长时间运行的并行请求导致 ThreadPool 饿死并使整个服务器瘫痪。

选项 2:有了操作 ID,如果操作完成,我开始轮询服务器。但是,这是针对我自己的服务器的拒绝服务攻击。此外,必须有公平的 ajax 解决方案。这不是一个独特的问题。

最佳答案

查看 WebSync ,.NET 的 cometd 实现。应该正是您要找的。

关于.net - 如何在不轮询的情况下通知我的 JS 客户端?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1333871/

相关文章:

.net - ASP.NET Core - 将加密 key 存储到 Redis

c# - 将对象深拷​​贝到 List 中

javascript - 获取用户设置 'first day of week' 值的星期 DATE 对象的第一个日期

jquery - 通过 $.ajax 将多个变量传递给 beforeSend 函数

php - 如何避免 Laravel 登录重定向到最新的 AJAX 调用?

c# - 动态postbackurl

c# - 最快/最安全的文件查找/解析?

javascript - 在 iFrame 中运行自定义 JavaScript 代码的问题

javascript - 使用 Vue.js 将多个数字输入相加

javascript - JQuery on() 未定义函数