0
我有一個使用SignalR的asp.net mvc 4應用程序。SignalR OnConnected多次調用
當用戶連接時,我想通知所有人(發送到「全部」目前只是爲了測試它)。在我中心CLAS我有這樣的:
public override System.Threading.Tasks.Task OnConnected()
{
NotifyAllOfUserLogin();
return base.OnConnected();
}
在_layout.cshtml,我有這樣的:
<script type="text/javascript">
$(document).ready(function() {
var proxy = $.connection.messagehub;
proxy.client.messageAll = function (message) {
$('#messages').prepend('<p style=\'white-space:pre;\'>' + message + '</p><br />');
};
$("#btnSubmitMessage").click(function() {
proxy.server.messageAll($("#txtMessage").val());
$("#txtMessage").val('');
});
$.connection.hub.start();
});
</script>
雖然這個作品,我覺得在母版寫這是一個錯誤,因爲集線器連接將被重新初始化爲繼承主機的每個頁面,因此OnConnected將被調用很多次。
我應該如何正確處理這種情況,僅在用戶登錄到應用程序時調用OnConnect,並且在用戶註銷時斷開連接?
所以實際上可以使用$ .connection.hub.start();在masterpage中調用,因爲所有操作通過連接ID?謝謝,這開始有意義。 –
是的,它完全沒問題。完全取決於您如何處理與SignalR集線器的連接。請記住,應用程序中的每個頁面都會導致打開/關閉頁面上的連接/斷開連接。 – SeanPrice
我也注意到每一頁上的連接/斷開連接 - 顯然是因爲我在主頁面中做了所有這些,但如果你的意思是我不應該擔心它,因爲這不是問題,那麼確定 –