Saat saya mengirim pesan menggunakan anotasi @SendToUser, itu sudah selesai. Saya menerima pesan di sisi klien.
Tetapi ketika saya mengirim pesan menggunakan msgTempl.convertAndSendToUser(...) maka saya tidak bisa mendapatkan respons di sisi klien saya.
Ikuti kode saya:
@RestController
public class NotifyController {
private final SimpMessagingTemplate messagingTemplate;
@Autowired
public NotifyController(SimpMessagingTemplate messagingTemplate) {
this.messagingTemplate = messagingTemplate;
}
@MessageMapping("/chat.send")
/* @SendToUser("/queue/ns-queue")*/
public Message sendMessage(@Payload Message message,
@Header("simpSessionId") String sessionId) {
messagingTemplate.convertAndSendToUser(sessionId, "/queue/ns-queue",
message);
return message;
}
@MessageMapping("/chat.register")/*
@SendToUser("/queue/ns-queue")*/
public Message addUser(@Payload Message message,
SimpMessageHeaderAccessor headerAccessor,
@Header("simpSessionId") String sessionId) {
messagingTemplate.convertAndSendToUser(sessionId, "/queue/ns-queue",
message);
return message;
}
}
Konfigurasi Ws:
@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfiguration implements
WebSocketMessageBrokerConfigurer {
private final WebSocketConfigurationProperties configurationProperties;
@Autowired
public WebSocketConfiguration(WebSocketConfigurationProperties
configurationProperties) {
this.configurationProperties = configurationProperties;
}
@Override
public void configureMessageBroker(MessageBrokerRegistry config) {
config.enableSimpleBroker(configurationProperties.getTopic());
config.
setApplicationDestinationPrefixes(configurationProperties.getAppPrefix());
}
@Override
public void registerStompEndpoints(StompEndpointRegistry registry) {
registry.addEndpoint(configurationProperties.getEndpoint()).withSockJS();
}
}
Di sisi klien:
function connect(event) {
username = document.querySelector('#name').value.trim();
if(username) {
usernamePage.classList.add('hidden');
chatPage.classList.remove('hidden');
var socket = new SockJS('/ns/ws/endpoint');
stompClient = Stomp.over(socket);
stompClient.connect({}, onConnected, onError);
}
event.preventDefault();
}
function onConnected(payload) {
// Subscribe to the Public Topic
stompClient.subscribe('/user/queue/ns-queue', onMessageReceived);
// Tell your username to the server
stompClient.send("/ns/ws/chat.register",
{},
JSON.stringify({sender: username, type: 'JOIN'})
)
connectingElement.classList.add('hidden');
}
Saya tidak menggunakan keamanan pegas.
Tolong bantu aku! Mengapa saya tidak dapat mengirim dan menerima pesan saat saya menggunakan SimpMessagingTemplate?