เมื่อฉันส่งข้อความโดยใช้คำอธิบายประกอบ @SendToUser เสร็จสิ้นแล้ว ฉันได้รับข้อความในฝั่งไคลเอ็นต์
แต่เมื่อฉันส่งข้อความโดยใช้ msgTempl.convertAndSendToUser(...) ฉันก็ไม่ได้รับการตอบกลับในฝั่งไคลเอ็นต์ของฉัน
ทำตามรหัสของฉัน:
@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;
}
}
WsConfig:
@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();
}
}
ทางฝั่งไคลเอ็นต์:
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');
}
ฉันไม่ได้ใช้ระบบรักษาความปลอดภัยแบบสปริง
โปรดช่วยฉันด้วย! เหตุใดฉันจึงไม่สามารถส่งและรับข้อความได้เมื่อฉันใช้ SimpMessagingTemplate