Spring Boot WebSocket问题

Spring Boot WebSocket问题

问题描述:

我是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

当你谈论的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