我有多個具有signalR功能的JavaScript塊。信號器檢查集線器是否已啓動
我不知道,這樣我想與
$.connection.hub.start();
啓動樞紐,如果它不是已經開始執行的順序。
如何檢查集線器是否已啓動?多次啓動它會引發錯誤。
我有多個具有signalR功能的JavaScript塊。信號器檢查集線器是否已啓動
我不知道,這樣我想與
$.connection.hub.start();
啓動樞紐,如果它不是已經開始執行的順序。
如何檢查集線器是否已啓動?多次啓動它會引發錯誤。
有幾種方法可以解決這個問題。首先是要創建自己的連接狀態跟蹤變量,其中設置有連接回調事件:
$.connection.hub.start().done(function() { ConnectionStarted = true; })
您可以嘗試啓動連接之前檢查ConnectionStarted。不幸的是,這不會很好,因爲start()是異步的,所以很多實例可能會在完成並將ConnectionStart設置爲true之前嘗試啓動連接。
因此,工作解決方案。那裏有兩個。首先,有每個實例使用其自己的連接對象(即:不使用默認的$ .connection.hub,而是使用手動連接產生者:
var localConnection = $.hubConnection();
var localHubProxy= localConnection.createHubProxy('HubNameHere');
這也不是很大,因爲大多數瀏覽器有一個有限的每頁連接數,也因爲它通常是過度殺傷。
IMO,最好的解決方案是使用默認代理($ .connection.hub)的單一自動連接,並看看連接狀態剛剛碰到)每個連接對象都有一個狀態:
$.signalR.connectionState
Object {connecting: 0, connected: 1, reconnecting: 2, disconnected: 4}
因此,在每一種情況下,去這樣的事情?:
if ($.connection.hub && $.connection.hub.state === $.signalR.connectionState.disconnected) {
$.connection.hub.start()
}
另外請注意,當你創建一個連接,它將在狀態「斷開連接」/4,直到開始坐在叫做就可以了。一旦啓動被調用,連接將顯然嘗試不斷重新連接(如果它被中斷),直到$ .connection.hub.stop()被調用(然後將返回到「已斷開」狀態)。
參考文獻:
http://www.asp.net/signalr/overview/hubs-api/hubs-api-guide-javascript-client#establishconnection https://github.com/SignalR/SignalR/wiki
當輪轂也採用.done()
$.connection.hub.start().done(function() {
});
用這種方法開始你可以檢測到,你可以做以下(從文檔摘自:https://github.com/SignalR/SignalR/wiki/SignalR-JS-Client-Hubs),然後你可以跟蹤如果連接打開你自己。
function connectionReady() {
alert("Done calling first hub serverside-function");
};
$.connection.hub.start()
.done(function() {
myHub.server.SomeFunction(SomeParam) //e.g. a login or init
.done(connectionReady);
})
.fail(function() {
alert("Could not Connect!");
});
您可以檢查您的每一個功能,如連接狀態:
function doSomething {
if ($.connection.hub.state === $.signalR.connectionState.disconnected) {
$.connection.hub.start().done(function() { myHub.server.myHubMethod(); });
}
else {
myHub.server.myHubMethod();
}
}
這不是很好,因爲狀態可能是'連接',並且您會啓動另一個啓動,這將會崩潰,最好像dpb一樣執行。連接。 – 2016-10-13 09:21:17
@BjørnØyvindHalvorsen根據您的反饋編輯 – 2016-10-13 09:32:52
這並不多.done工作電話 – daniel 2013-02-25 12:23:38
多?你可以解釋嗎? – LiamB 2013-02-25 12:24:16
我有不同的服務器生成的部分HTML頁面的多個JavaScript塊。我不知道腳本塊執行的順序。所以我不知道從哪裏開始我的中心。 – daniel 2013-02-25 12:25:47