2015-11-11 99 views
6

我试过研究这个,但没有发现太多听起来类似于我需要实现的东西。总之,我们将在服务器上运行一个ASP网站,供客户访问。理想情况下,我们有一个函数,我们希望在用户会话开始时初始化,并在会话结束时停止。当会话发生时,此函数通过套接字通信发送和接收消息,这意味着我们需要从页面访问此类的发送/接收函数以移动信息。什么是最好的方式去做这件事?我将如何在ASP.Net服务器上运行连续任务?

+1

FWIW,对于所有投票的人来说,我认为这是一个完全有效的问题。它(有效地)有一个单一的正确答案,并且问得好。唯一可能的问题是标题有点混乱,它似乎描述的是与真正被问到的不同的问题。 –

回答

6

看看SignalR。这可能是你想要的。它的“集线器”实际上就是您在启动会话过程中寻找的东西,并在用户消失时停下来。它有一个客户端JS库,它可以自动选择可用的最佳连接方法(例如,websocket> server-sent-events> long-polling),它允许您从客户端发送消息到服务器,并从服务器到客户端。

http://www.asp.net/signalr

,我已经与周围打了过去另一种方法是XSockets:

https://xsockets.net/

它在许多方面类似于SignalR,但它不是免费的。

+0

一直在研究这一点,我确实相信这是我们正在寻找的。谢谢! – JtHa77

2

很难说清楚你的描述,你想通过套接字与客户端浏览器通信吗?或者你是否试图通过套接字与其他服务进行通信?

Web应用程序并非理想地适用于确定性类型的操作。 Web服务器很难知道客户端是否确实关闭了浏览器。在大多数情况下,会话经过一段时间不活动后会超时(大多数情况下超过20分钟)。所以你不能可靠地知道用户会话何时实际结束。

最重要的是,Session_End不会触发某些边缘情况。例如,如果应用程序池回收,则不会触发Session_End事件。这可能不是问题,因为如果应用程序池回收您的其他连接也会回收,但仍然需要记住一个问题。

最后,Web应用程序不打算长时间运行。

相关问题