非常に人気のある春の websocket デモから次のコードがあります。
stompClient.connect({}, function(frame) {
setConnected(true);
console.log('Connected: ' + frame);
stompClient.subscribe('/user/queue/greeting', function(greeting) {
displayQueueMessage(greeting);
});
function sendName() {
var name = document.getElementById('name').value;
stompClient.send("/app/wsdemo", {}, JSON.stringify({
'name' : name
}));
}
接続時に、実際にキューにサブスクライブし、コールバック メソッドを提供します。
ここで、 getAllUsersという Websocket 用のサーバー サービスがあるとします。
フロントエンドにusersOnGeographicMap、 usersOnDataTableという 2 つの異なるコンポーネントがあるとします。
この 2 つのビュー コンポーネントがサーバー サービス (getAllUsers) を利用するとします。これら 2 つのコンポーネントにはそれぞれコールバック関数があります (1 つはユーザーを地理マップに表示し、もう 1 つはユーザーをデータ テーブルに描画します)。
問題は、キューを一度だけサブスクライブし、コールバック関数を 1 つ提供することです。どうすればこの問題を解決できますか?
もちろん、ajax では、各呼び出しにコールバックが提供されるため、非常に簡単です。