Я использую WebSocket с веб-приложением Spring Boot.Почти все условия работают нормально.Но проблема в том, что, когда из SNMP пришло 2 быстрых «Trap message», функция convertAndSend
отправляет эти 2 сообщения клиенту.На стороне клиента он получает два сообщения, но первое сообщение заменяется вторым сообщением (т.е. два сообщения одинаковы на стороне клиента).
На стороне сервера
@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig implements WebSocketMessageBrokerConfigurer
{
@Override
public void registerStompEndpoints(StompEndpointRegistry registry)
{
registry.addEndpoint("/connect-websocket").withSockJS();
}
}
Для отправки сообщения клиенту при получении сообщения прерывания SNMP
@Autowired
private SimpMessagingTemplate webSocket;
webSocket.convertAndSend("/ws/messages","SNMP trap message to client");
Клиентская сторона
<script src="sockjs.min.js"></script>
<script src="stomp.min.js"></script>
var socket = new SockJS('/my-app/connect-websocket');
var stompClient = Stomp.over(socket);
stompClient.connect({}, function (frame)
{
console.log('Connected: ' + frame);
stompClient.subscribe('/ws/messages', function (message)
{
console.log("message=",message.body);
});
},
function(message) //disconnect event
{
});
Я протестировал этот метод в контроллере и работает нормально.Я получил 3 разных сообщения.
@Autowired
private SimpMessagingTemplate webSocket;
webSocket.convertAndSend("/ws/messages","Message1 to client");
webSocket.convertAndSend("/ws/messages","Message2 to client");
webSocket.convertAndSend("/ws/messages","Message3 to client");