我想问一下在asp.net核心项目中实时通知的可能性。不幸的是,在这种情况下,SignalR似乎不是一种选择。
所以我有EF和SQL服务器以及剃刀页面的项目。在这个项目中,有两组管理员和普通人。普通人有权使用简单字段提交表单,我希望每次用户提交表单修改布局,以便管理员看到一些红色!通知他有新的表格要审查。
我试过调用可以从视图中检查它的方法,但是我没有成功。此外,我一直在检查SignalR库,但这是在点击监听器上使用javascript,这不能附加到负责提交表单的方法。
任何人都知道这在理论上如何运作?
答案 0 :(得分:4)
通常,Web上的所有内容都绑定到固定的请求/响应模式。因此,您从服务器请求某些内容,它会响应某些内容,然后关闭连接。这使得很难拥有某种通信渠道,您可以在其中主动收到服务器端更改的通知。
现在通常有两种不同的方法:
Polling:这通常意味着客户端不断要求更新。因此,每隔X秒,就会向服务器发出一个新请求,要求进行更改。
还有一种称为“长轮询”的替代方案,其中连接保持打开更长时间。客户端发出正常请求,但服务器会花时间响应,保持响应可用,直到实际更新发生(在这种情况下,响应随后被发送)。
Push:这可以使用各种技术让服务器主动将信息推送到客户端。有一些针对移动设备的专有解决方案,但也有标准化的Push API,但目前在浏览器中尚未得到很好的支持。
使用Push的另一种常见方法是简单地建立一些永久连接。这通常使用WebSockets来完成,See reference about other fixed database roles基本上是在客户端和服务器之间建立的全双工通道,允许它们随时发送数据。
对于实时应用程序,WebSocket通常是要走的路,虽然取决于您的客户,您可能需要以轮询的形式进行一些后备。 SignalR就是这样做的:它为客户提供了一个高级API,可以与服务器和服务器进行交互,以便与客户端进行交互,而无需担心底层连接的工作原理。
此外,我一直在检查SignalR库,但这是在点击监听器上使用javascript,这不能附加到负责提交表单的方法。
SignalR使用JavaScript,是的,但是任何解决方案都需要JavaScript,因为您要求在客户端进行交互。因此,需要在网页的开头建立SignalR连接,然后当其他人发出请求时,您实际上可以将消息从服务器发布到已连接的客户端。
如果正确完成,SignalR可以满足将其他人所做的更改推送给管理员的要求。