javascript - ASP.NET MVC - 将服务器端事件传播到客户端

标签 javascript jquery asp.net asp.net-mvc asp.net-mvc-4

在我的 ASP.NET MVC 应用程序中,用户单击 UI 上的按钮来调用电话。 ajax 请求发送到 MVC 应用程序,该应用程序调用电话拨号器 - 库中调用外部组件进行调用的方法。

如果调用的电话被调用接收者终止,电话拨号器组件将通过调用其自己的类中的事件处理程序来引发事件。

我想将该事件传播到客户端,以便它可以更新其 UI。

我无法使用的选项

我查看了 JavaScript 服务器发送的事件。但是,它们与我的情况不同,在 JavaScript 服务器发送的事件中,会发生以下情况:

1) 客户端在新套接字上发起与服务器的连接。主要区别在于,客户端发起连接。

2) 连接保持事件状态,直到服务器或客户端想要终止它为止。

3) 从建立连接到客户端或服务器想要终止连接并且不再交换通知,服务器必须始终处于事件状态。这意味着每个客户端使用一个新的套接字连接以及一个新的工作线程来服务通知交换。

如果我使用服务器发送的事件,我将必须创建一个保持事件状态的服务器。这意味着我必须在 Controller 和相应的 View 上执行一个新操作,该 View 从一开始就被调用并保持事件状态,直到收到有关调用挂断的通知。

这不仅成本高昂,而且与我的设计违反直觉,因为我不想仅仅为了监听事件而重定向到新 View 。

还有其他选择吗?

最佳答案

您必须使用 WebSocketLong polling 。除了正常的 HTTP 周期之外,这些都要求您建立从客户端到服务器的连接。您还期望什么?当页面发送后,客户端和服务器之间的通信就完成了。 HTTP 周期结束,不再有数据可以通过。新连接需要源自客户端,因为客户端不允许任意传入连接。

关于javascript - ASP.NET MVC - 将服务器端事件传播到客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16747289/

相关文章:

c# - 当页面长时间打开时,JQuery ajax 调用中断

Javascript 跨浏览器输入层

asp.net - 使用 CompareTo() 根据多列进行排序

c# - ASP.NET MVC 子目录

asp.net - 如何为网站创建 RSS 提要?

javascript - 由于某些原因值未定义,我如何将 javascript 结果放入网页中

javascript - 期望在 browser.call() 方法中失败不会失败测试

javascript - 如何动态检查表单中的复选框是否匹配

jquery - 使用 jquery 打开新选项卡

javascript - blueimp 多文件 uploader