spring websocket は初めてです。製品の変更をクライアントに送信したい。これを行うには、次のようにします。クライアントがソケット接続を作成し、宛先をサブスクライブします。
var socket = new SockJS('/websocket');
var stompClient = Stomp.over(socket);
stompClient.connect({}, function (frame) {
stompClient.subscribe('/product/changes', function (scoredata) {
// We received product changes
});
});
//Send Ajax request and say server I want to know product with id=5 changes.
sendAjaxRequest(5);
私は春のアプリを次のように設定しました:
@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig implements WebSocketMessageBrokerConfigurer {
@Override
public void registerStompEndpoints(StompEndpointRegistry registry) {
registry.addEndpoint("/websocket").withSockJS();
}
@Override
public void configureMessageBroker(MessageBrokerRegistry registry) {
registry.enableSimpleBroker("/product/");
registry.setApplicationDestinationPrefixes("/app");
}
}
今、私は次の方法が必要です:
@RestController
public class ProductController {
@GetMapping("product-{id}")
public void startSubscribe(@PathVariable("id") Long id) {
// register current websocket session with product id and
// then with convertAndSendToUser send changes to current user.
}
}
それを実装するにはどうすればよいですか?
Spring documentation は、Webソケットの概念を学ぶための良い出発点です。クライアントへの送信には SimpMessageSendingOperations を使用できます。
@Autowired
private SimpMessageSendingOperations messageSendingOperations;
コントローラメソッドから、次のようなものでメッセージを送信できます:
messageSendingOperations.convertAndSendToUser(websocketUserId, "/product/changes", messageObject);