0

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

如果呼叫的接收方终止了已拨呼叫,则电话拨号器组件通过调用其自己的类中的事件处理程序来引发事件。

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

我无法使用的选项

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

1) 客户端在新的套接字上向服务器发起连接。关键区别在于,客户端启动连接。

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

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

如果我使用服务器发送的事件,我将不得不制作一个保持活动状态的服务器。这意味着我必须在控制器上执行新操作,并在开始时调用相应的视图并保持活动状态,直到收到有关呼叫挂断的通知。

这不仅会很昂贵,而且对我的设计也有悖常理,因为我不想仅仅为了监听事件而被重定向到新视图。

有人有其他选择吗?

4

2 回答 2

1

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

于 2013-05-25T07:15:26.213 回答
1

我认为在正常情况下没有其他选择。

SignalR 等都需要连接处于活动状态或由客户端定期重新启动。我不知道任何允许服务器启动与浏览器的连接的东西(由于代理/防火墙等,它在技术上甚至看起来都不可能)。

于 2013-05-25T07:16:06.660 回答