Может кто-нибудь сказать мне, если реализация на стороне сервера использует stomp WebSocket, ожидается ли, что клиент также реализует stomp?
Я пытаюсь реализовать приложение с загрузочной пружиной, и я запутался, если мне нужно go с или без реализации Stomp. Из моего исследования я понимаю, что если вы хотите масштабировать приложение, лучше использовать Stomp и встроенный брокер (например, RabbitMQ), поскольку он будет обрабатывать сеансы, heartbeat et c. вместо посредника в памяти.
Примеры, доступные онлайн, просто показывают реализации с и без stomp.
Я в основном пытаюсь получить различные наборы данных из таблицы по запросу клиента и записать в WebSocket постоянно.
- Может ли кто-нибудь подтвердить, правильно ли мое понимание до сих пор?
- О каких важных вещах мне придется позаботиться, если я go с помощью stomp + websocket?
Обновление приведенного ниже варианта использования:
Мобильный телефон клиент будет отображать графики при входе пользователя. Там будут ссылки в левой панели, например. Продажи, Скидки и т. Д. c. который после нажатия, запрос достигнет сервера через канал websocket. Сервер проверит тип данных в запросе, сгенерирует модель, используя данные из БД, и запишет данные в веб-сокет.
Обновление кода - v1 MyWebSocketHandler:
@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 {
}
}
WebSecurityConfig:
@Configuration
@EnableWebSocket
public class WebSocketConfig implements WebSocketConfigurer {
@Autowired
private MyWebSocketHandler myWebSocketHandler;
@Override
public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
registry.addHandler(myWebSocketHandler, "/socketHandler").setAllowedOrigins("*").withSockJS();
}
}