Java Spingboot网袜跺脚
有谁能告诉我,如果服务器端实现使用的是stomp WebSocket,那么客户端是否也需要实现stomp 我正在尝试实现一个spring引导应用程序,我不知道应该使用还是不使用stomp实现。根据我的研究,我了解到,如果您想扩展应用程序,最好使用stomp和嵌入式代理(例如RabbitMQ),因为它将处理会话、心跳等,而不是内存中的代理 在线提供的示例仅显示了使用和不使用stomp的实现 我基本上是在客户机请求时从表中获取不同的数据集,并不断地写入WebSocketJava Spingboot网袜跺脚,java,spring,spring-boot,websocket,rabbitmq,Java,Spring,Spring Boot,Websocket,Rabbitmq,有谁能告诉我,如果服务器端实现使用的是stomp WebSocket,那么客户端是否也需要实现stomp 我正在尝试实现一个spring引导应用程序,我不知道应该使用还是不使用stomp实现。根据我的研究,我了解到,如果您想扩展应用程序,最好使用stomp和嵌入式代理(例如RabbitMQ),因为它将处理会话、心跳等,而不是内存中的代理 在线提供的示例仅显示了使用和不使用stomp的实现 我基本上是在客户机请求时从表中获取不同的数据集,并不断地写入WebSocket 有人能确认我目前的理解是否正
@Component
public class MyWebSocketHandler extends TextWebSocketHandler {
Logger logger = LoggerFactory.getLogger(getClass());
@Autowired
DashboardUtil dashboardutil;
@Resource(name = "socketSessionsMap")
private Map<String, WebSocketSession> socketSessionsMap;
@Override
public void handleTextMessage(WebSocketSession session, TextMessage message)
throws InterruptedException, IOException {
try {
//Gets the socket session from map and writes a json to that socket - did for testing purpose.
socketSessionsMap.put("session", session);
//String payload = message.getPayload();
String jsonString = dashboardutil.getDataInJSON(); // gets hardcoded json model
session.sendMessage(new TextMessage(jsonString));
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public void afterConnectionEstablished(WebSocketSession session) throws Exception {
}
@Override
public void afterConnectionClosed(WebSocketSession session, CloseStatus status) throws Exception {
}
}
有人能告诉我服务器端实现是否使用stomp吗
WebSocket,客户端是否也需要实现stomp
您可以在web套接字配置中注册多个处理程序。所以在理论上,您可以为STOMP提供一个处理程序,为plainwebsocket提供另一个处理程序。如果只提供STOMP处理程序,那么来自标准web套接字客户端的握手将失败
根据我的研究,我了解到,如果你想扩展应用程序,
最好使用stomp和嵌入式代理(例如RabbitMQ)作为它的代理
将处理会话、心跳等,而不是内存中的
经纪人
没错。STOMP还提供了一些更好的特性,特别是对某些端点的订阅
我基本上是在尝试从表中获取不同的数据集
客户端不断请求并写入WebSocket
这是一个非常简单的描述。。。
您应该考虑是否需要跨多个实例共享会话,或者是否需要在web套接字会话之间发送消息。
根据您的描述,听起来您只是接受了一个web套接字连接,并不断地将数据推送到客户端。如果您想扩展此应用程序,只需在实例前面放置一个负载平衡器,就可以了。我认为客户端使用的是基本WS。我肯定还有其他的事情要考虑,但我不知道这些是什么。我提到了WebSocket通信中涉及的一些概念。因此,问题2。我还没有考虑处理会议。首先,我需要知道的是,我是否应该使用WebSocketConfiger或WebSocketMessageBrokerConfiger或AbstractSessionWebSocketMessageBrokerConfiger扩展我的WebSocketConfig类,以便向您简要介绍用例。用户登录时,客户端将显示图表。左侧面板中会有销售、折扣等链接,点击后,请求将通过websocket渠道到达服务器。服务器将检查请求中的数据类型,从DB生成数据并将数据写入websocket。你能建议我应该怎么做吗?@continuousLearner如果客户机使用的是基本web套接字,那么你也应该在服务器中为基本web套接字实现一个处理程序。否则服务器将不接受握手。因此,如果您无法更改客户端,那么您就没有其他选择。另外,您的用例听起来基本websocket适合您的用例。其次,当你说基本websocket时,你指的是websocket配置器吗?使用代码更新问题。使用基本web套接字,我指的是默认协议。是的,您可以使用
WebSocketConfigurer
在那里注册处理程序。如果要使用STOMP这样的子协议,则必须在AbstractWebSocketMessageBrokerConfigure
中注册STOMP端点。
@Configuration
@EnableWebSocket
public class WebSocketConfig implements WebSocketConfigurer {
@Autowired
private MyWebSocketHandler myWebSocketHandler;
@Override
public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
registry.addHandler(myWebSocketHandler, "/socketHandler").setAllowedOrigins("*").withSockJS();
}
}