我正在研究一個允許用戶發送內部消息的應用程序。Spring-Flex BlazeDs多用戶+全球聊天消息系統
我會告訴你目前的設置是什麼,請幫我弄清楚如何使它工作或可能建議另一個角度。我們在Spring中使用BlazeDS。
- 用戶A偵聽上 消息主題Chat.A
- 用戶B對消息主題消息Chat.B偵聽消息
- 兩個用戶偵聽主題聊天全局消息(全系統的消息) .System
所以我們有一個多主題的消費者爲個人消息主題和一個爲全球消息主題。
那麼幾個問題,我有:
- 是更好地做到這一點作爲兩個不同的 消費者(共享 相同的處理函數),或者爲一體, 多主題的消費?
- 如何檢查客戶端A實際上是否正在偵聽Chat.A,而不是僅知道如何編寫BlazeDS客戶端的其他人?我們安裝了Spring Security,但是如何監聽訂閱請求,並在他們的用戶名(從安全上下文中提取)與他們請求的子主題不匹配的情況下阻止他們?
我也讀過關於選擇器。那麼,這看起來很有希望,但是,我又如何檢查當消費者使用selector="for == A || for == System
時,消費者屬於已經被認證爲「for」用戶的客戶端。
- 選擇器如何與子主題進行比較/對比?他們每個人的最佳狀況是什麼?
非常感謝!我用你的例子來做我所需要的。我試圖通過查看對象管理(CommandMessage commandMessage)來檢查訂閱請求(http://livedocs.adobe.com/livecycle/8.2/programLC/programmer/javadoc/flex/messaging/services/messaging/adapters/MessagingAdapter.html )。我將我的安全邏輯移到了allowSubscribe(Subtopic subtopic)方法中,它像一個魅力一樣工作! – davidemm 2009-09-29 16:35:59
通過使用Spring-Flex集成:其中「MyMessagingAdapter」是對bean的引用。在bean(適配器)中,我檢查了子主題,並確保沒有通配符,最低的子主題與從安全上下文中拉取的用戶名匹配:SecurityContextHolder.getContext()。getAuthentication()。getName()) –
davidemm
2009-09-29 16:43:52