signalR 在webfarm下的配置

2022-02-01 03:03:50 字數 1301 閱讀 7700

建立乙個站點(server),提供signalr服務

建立另乙個站點(client),呼叫signalr服務

把server配置到web farm下

client通過webfarm呼叫。

webfarm不支援websocket,所以退化成長連線(據說nginx好像支援了,沒試過)。

當farm下只有乙個節點時,一切正常,當加入2個節點後

在呼叫/signalr/connect或/signalr/reconnect時,有時會報錯

the connection id is in the incorrect format.

這個與connection id和connection token的生成驗證有關。

於此相關的介面為iprotecteddata

實現此介面(原始碼中有測試部分,可參考)不做亂七八糟的驗證,直接返回

public class 

emptyprotecteddata

: iprotecteddata

public string

unprotect(

string

protectedvalue,

string

purpose)

}

最後註冊到依賴注入中。注意註冊的位置

routetable

.routes.maphubs(

new

microsoft.aspnet.signalr.

hubconfiguration

);globalhost

.dependencyresolver.register(

typeof

(iprotecteddata

), () =>

new

emptyprotecteddata

());

要在maphubs後面。否則是不起作用的。

因為加入了負載,是兩台以上的真實伺服器,監聽連線到a,而傳送負載到b,此時要b的傳送引起a的監聽返回。單純上面的配置是不行的。

還需要引入對負載的支援。

目前提供了基於azure,redis和sql server的,實驗環境用的是sql server。配置很簡單可參考

本實驗,client和server用的是不同的站點,及2個網域名稱,所以還要開啟跨域支援

routetable

.routes.maphubs(

new

microsoft.aspnet.signalr.

hubconfiguration

);

web farm 討論引出

關於web farm 有成功的實施的文件沒 用它還不如 用nginx,簡單易用。nginx for windows的執行效果咋樣 windows iis無敵 玩nginx就不要用win系統,必須linux.2012r2測試中 貌似還不錯 跑了多久了 2012有core模式,無介面全命令列 web伺服...

在web farm中架設需要證書的wcf

makecert r pe n cn 頒發給 ss my sky exchange 此為證書的生成命令,其中 頒發給 需要替換成具體的機器。頒發給誰,則要使用對應的方式來訪問服務 如頒發給www.abc.com則在引用服務的web.config中address就應該是 同樣,機器名,公網ip和內網i...

Signalr入門系列 Signalr簡介(二)

一 signalr和websocket signalr是在websocket的基礎上進一步的封裝,可以實現除了websocket原有功能上更多的功能,例如回退到其他transports,修改應用程式以更新websocket implementations。signalr可以自動判斷傳輸方式,在可以用...