我在學習反應式編程,第一印象是它與SignalR(都使用push)相似。然而,後來我瞭解到這種差異,Rx如何不關心「如何」,而只關心「什麼」。因此,我想實現我使用Rx和SignalR學到的東西。我創建了一個簡單的拍賣MVC網絡應用程序,使用SignalR以最新價格和剩餘時間更新出價人。Rx與ASP.NET MVC中的SignalR
,我嘗試使用RX是如下實施的情景:
- 客戶點擊出價按鈕。
- SignalR集線器接收競標請求 並將更新的價格傳播給所有客戶端。剩下的時間增加了。
- SignalR集線器發送更新的剩餘時間每秒。
所以這裏我們有兩個事件源。 投標人點擊投標按鈕,SignalR每秒更新投標人的剩餘時間。
我不知道SignalR更新客戶與最新的出價價格被認爲是可以在Rx中實施的事件。 是嗎?
基於以上,我們有兩個觀測(按鈕和SignalR樞紐定時器) 基於安德烈Staltz在教程「的出臺,對反應式編程,你已經失蹤」 [1]我可以想像和理解按鈕的點擊流。但是,我遇到了定時器流的問題,我認爲應該使用Observable.Interval
來實現。因此,現在我需要RxJS在客戶端傳輸按鈕點擊,其中SignalR hub將成爲觀察者,同時,我需要在SignalR hub中使用Rx.NET,以便將剩餘時間事件傳輸到連接的客戶端誰將成爲觀察員。 我看着李坎貝爾tutorial和他使用SignalR與Rx.NET反應交易員,但因爲它的先進我沒有詳細研究,但我發現在CodeProject [2]一個簡化版本由薩沙·巴伯和答案吉姆 - 伍利[3]
但是,我無法理解如何實現我的觀點,觀察者是觀察者,反之亦然。 SignalR和Rx之間的界限是什麼?我知道他們每個人都做了什麼,但是如何在上面的示例中構建被動方法,我應該在調用Observalbe.Interval
時調用更新剩餘時間的javascript函數? 如果是這樣,Rx的價值是什麼? SignalR集線器正在每個連接的客戶端調用更新功能,而不需要Rx。由於一切都是流,我應該把所有東西都轉移到Rx上嗎?
我真的很感謝你的幫助,或者如果你能指導我討論這種情況的好資源。
Rx主要是關於事件和類事件數據源的組成。如果我理解正確,SignalR是一種實時向網頁發送數據和從網頁發送數據的方式。這兩種技術做了不同的事情,但應該能夠一起使用。 Rx非常強大,它是我處理任何事件驅動的數據源的首選方式。 – Enigmativity