2017-07-17 104 views
0

我是Spring框架的新手,現在我選擇它作爲新項目。Spring Boot WebSocket問題

該項目實際上是一個在線諮詢應用程序。當客戶選擇通過打開的頁面窗口進行查詢時,會爲他分配一位諮詢工程師(多對一)。總之,這個應用程序需要以下考慮因素。

1-顧客和驗證諮詢工程師的匿名連接。一個工程師可以同時服務多個客戶。 3-可以配置分配客戶的方式。當HTTP會話過期時,WebSocket會話應保持打開狀態。

所以我有兩個問題:

1-3的項目,我不知道我是否應該選擇STOMP或普通的WebSocket在春季。看起來STOMP更先進,但更可能適合一般消息傳遞要求(主題,訂閱...等)。另一方面WebSocket更簡單,更靈活。我想知道這個諮詢應用程序中哪一個更好?

點4,會話過期。谷歌的結果表明春季會議。但我只能找到關於與STOMP集成spring-session的教程。如果WebSocket是更好的選擇,我如何將Spring會話與Plain WebSocket集成?

感謝

+0

太籠統的一個問題,你在徵求意見,或者可能是書中的一章。你需要澄清一些你的術語。沒有像HTTP會話那樣的東西。 HTTP協議是一個請求/響應協議。客戶端請求/服務器響應/套接字關閉。 「會話」的想法是必須分層的。很明顯,websocket是一種替代協議,專門用於持續套接字通信,因爲HTTP沒有會話。你需要澄清你的意思。 – gview

+0

@gview對於誤導性信息抱歉,當我說HTTPSession時,我指的是用戶的服務器端會話。 – Korben

回答

1

當你談論的WebSocket你必須有記住,這是一個簡單的和「原始」通信協議沒有太多的定義的消息控件。如果您選擇使用普通WebSocket,則應該能夠使用基本身份驗證[1]進行身份驗證。在這種情況下,您的websocket連接一旦打開,將保持打開狀態並無限期地工作。

但是,您也可以控制消息流,決定如何爲每條消息指定目標。這就是STOMP應該幫助你的地方。

使用STOMP,您可以定義客戶和諮詢工程師「訂閱」並開始溝通的「渠道」。而且您還可以使用經過認證的Spring Security會話中的「Principal」發送私人消息。

所以,回答你兩點:

1 - 爲客戶和認證匿名連接的 諮詢工程師。

可以在Spring Websocket配置[2]中定義多個端點。您可以嘗試僅通過使用ChannelInterceptorAdapter的實施方案的一個端點請求認證。

2-一名工程師一次可以服務幾個客戶。

使用通道的定義,藉助STOMP,您可以在多個通道訂閱enginner,每個通道對應一個客戶...或者在他們之間使用私人消息。

3-可以配置分配客戶的方式。

我不確定你的意思...但是,將客戶分配到「渠道」應該很容易。

4- WebSocket會話在HTTP會話過期時應保持打開狀態。

HTTP會話僅在初始過程中用於連接到websocket。之後,websocket將保持打開狀態,或者如果您使用SockJS進行回退,則HTTP會話將不斷更新。

我使用Spring API編碼了example of websocket server and client。這不完全是你需要的,但我認爲它會給出一個好主意。

+0

謝謝@Jairton Junior,我會選擇跺腳並檢查你的例子。 – Korben