簡體   English   中英

SignalR橫向擴展客戶端到服務器廣播

[英]SignalR scaleout client to server broadcast

使用SignalR橫向擴展,如何將消息從客戶端廣播到背板上連接的所有服務器? 我認為默認情況下它應該可以工作,但是只有一台服務器的集線器正在接收該消息。

設置:我在負載均衡器后面有4個虛擬機,並且正在使用帶Redis背板的SignalR。 我有以下集線器:

public class ProgressHub : Hub
{
    public void StartProcessing(string clientId)
    {
        // ...
    }
}

在客戶端,我通過以下方式調用此方法:

$.connection.hub.start().done(function() {
    proghub.server.startProcessing(me.clientId);
});

我已經在消息總線上啟用了跟蹤,並且在所有服務器上都收到了消息:

SignalR.ScaleoutMessageBus Information: 0 : OnReceived(0, 54, 1)

但是,僅在一台服務器上調用Hub方法。 如何使此調用在所有服務器上執行StartProcessing方法?

這不可能。 最好的方法是在服務器之間啟用某種同步機制。 由於Redis用作背板,因此也可以用作這種機制。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM