2015-11-11 148 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應用程序不打算長時間運行。

相關問題