我使用Caliburn.Micro構建Windows 8.1通用應用程序。該應用程序使用WebSocket連接到Web服務。無論用戶在哪個頁面上,只要應用程序處於活動狀態,我希望此連接一旦建立,就能保持活躍狀態。保持WebSocket和一些事件處理程序在應用程序處於活動狀態時處於活動狀態
目前我正在做這樣的:
container = new WinRTContainer();
container.Singleton<IConnectionService, ConnectionService>();
,似乎工作,我想。我可以將其注入到viewmodels中,並且連接仍處於打開狀態,即使未注入服務的視圖模型處於活動狀態,它也會接收消息。但是,如果這是正確的方式(如果它實際上正在做我期望的),我有點好奇嗎?
其次,我使用連接管理器來解析從WebSocket連接返回的JSON並創建相應的類,如RandomThingHappened
,並使用Caliburn.Micro的事件聚合器服務廣播這些類。對這些感興趣的人可以訂閱並做他們想做的事。但是,無論用戶使用哪個視圖,都會收到一些我希望處理的消息。這可能嗎?我也想過爲此創建單例,並且確保在某處實例化這些單例。這似乎有點......有風險。
對此提出建議?
沒有與卡利經驗,藉此與一粒鹽,但也許你可以創建視圖繼承的附加層,以定義實現這些事件一個基本視角? –
這絕對是個好主意@JeroenVannevel,我會試試! – JLe