1
に起こっているとき、私はストンプクライアントはSessionSubscribeEventが
@Service
public class UserSubscribeEventListenerService {
private SimpMessagingTemplate template;
@Autowired
private GenericService<User> userService;
@Autowired
public UserSubscribeEventListenerService(SimpMessagingTemplate template) {
this.template = template;
}
@EventListener
public void handleSubscribeEvent(SessionSubscribeEvent event) {
try {
String subscribedUser = event.getUser().getName();
System.out.println("User is " + event.getUser().getName() + " Message is " + "GREETINGS");
Thread.sleep(3000);
System.out.println("AFTER 3 seconds....");
template.convertAndSendToUser(subscribedUser, "/user/"+subscribedUser+ "/notify", userService.getByEmail(subscribedUser));
} catch (MessagingException e) {
System.out.println(e.getCause()
+ "\n\n"
+ e.getCause());
return;
} catch (InterruptedException e) {
System.out.println(e.getCause()
+ "\n\n"
+ e.getCause());
return;
}
}
}
としてリスナーをサブスクライブしたメッセージ/通知を取得していないが、ストンプのためのJS関数の集まりですが、
<script type="text/javascript">
//Create stomp client over sockJS protocol
var socket = new SockJS("/ws");
///var socket = new SockJS("/ws");
var stompClient = Stomp.over(socket);
$(document).ready(function() {
stompClient.connect({}, function(s) {
stompClient.subscribe('/user/' + s.headers['user-name'] + '/notify', function(frame){
var messages = JSON.parse(frame.body)
var i;
var count = 0;
for(i in messages) {
var message = messages[i];
count ++;
if(count <= 5){
$('#user_message_addon').append(
$('<li>').append(
$('<span></span>').html(message.notificationMessage)
),
$('</li>')
)
);
}
}
});
});
});
</script>
の下に与えられたクライアント側がありますUserSubscribeEventListenerService
イベントが発生したときにクライアント側でコンソール出力が表示されている
メッセージや通知を受け取ることができません。
問題の解決方法を教えてください。私は春の変更は、ユーザー名に応じた名前自体をキュー考える
template.convertAndSendToUser(subscribedUser, "/notify", userService.getByEmail(subscribedUser));
または
template.convertAndSendToUser(subscribedUser, "/user/notify", userService.getByEmail(subscribedUser));
:
最初の提案はうまく働いた、他うまくいくかもしれませんが、もう一度感謝しました。 –
私は質問をしたいと思う、私はあなたが気にしないと思う、質問は_どのように私はユーザーのリストからユーザーを取得し、彼にメッセージを送ることができます 'stompClient.send(" here-how-to-set-destination-destination " }、 "Hi to selected user"); '_?あなたは答えることができます(ネット上のソースを参照してください)。 –
私はあなたのユースケースを知らないときは答えにくいです。 1つのアイデアは、あなたのモデルを介してuserName(ユーザーのリスト)を渡して、jsコードで表示して使用することです。しかし、より詳細な情報が役に立つでしょう。 –