如何用SignalR取代传统的Ajax轮询?

时间:2012-06-19 05:56:46

标签: c# asp.net signalr

我想用SignalR做什么:

1-在页面加载时从会话UserID设置隐藏字段,并将此ID发送回服务器的SignalR Hub,以启动给定用户的轮询线程。

2-当用户离开网站时终止线程。

现在我每个用户每30秒对服务器发出AJAX请求以检查新的用户消息。我只想用SignalR替换它。当通过在页面加载时设置隐藏字段然后通过ajax请求设置会话变量来创建用户会话时,我能够在HUB中创建用户级线程,因此不会一次又一次地为同一用户创建新线程,例如页面刷新。线程在(15秒)之后定期检查新到达的消息。主要问题是如何在会话结束时终止为特定用户创建的线程。这是使用SignalR的正确方法吗?

1 个答案:

答案 0 :(得分:0)

这听起来不是很好的设计 - 无论如何,民意调查永远不会好。如果你能立即传递信息会更好。您使用多个网络服务器吗?如果没有,则在应用程序内部本地传递消息。如果您使用多个Web服务器,请考虑使用RabbitMQ,Redis或类似的东西在服务器之间发送消息。