Сама настройка веб сокета
<websocket:message-broker application-destination-prefix="/app">
<websocket:stomp-endpoint path="/hello">
<websocket:sockjs/>
</websocket:stomp-endpoint>
<websocket:simple-broker prefix="/topic"/>
</websocket:message-broker>
Есть метод контроллера который отвечает за отправку сообщения в очередь
@MessageMapping("/hello")
public void chatting(MessageDto message) {
SimpleDateFormat dateFormat = new SimpleDateFormat("dd.MM.yyyy hh:mm");
message.setFormatDate(dateFormat.format(new Date()));
Message saveMessage = messageService.saveMessage(message);
messagingTemplate.convertAndSend("/topic/chat/" + saveMessage.getConversation().getUIDConversation(), message);
}
т.е. по задумке у меня для пары пользователей свой уникальный канал.
Всё работает отлично если оба пользователя нажали на иконки друг друга на UI, получается что они оба подписываются на один и тот же канал созданный для них.
Проблема заключается в том, если нажмет на иконку только один пользак и будет писать сообщения другому, который не нажал на иконку чата, то получается, что он в очереди один и сообщения уйдёт в никуда.
Есть ли какой нибудь способ уведомить пользователя, что ему пришло сообщение или же как нибудь его автоматом подключить к очереди начавшего разговор юзера?
На всякий случай код коннекта js
$(document).ready(function () {
$('.chat_list').click(function () {
var idClickUser = this.id;
UIDConversation = currentUserId + idClickUser;
$.ajax({
type: 'POST',
url: '/chat/check',
data: {
idClickUser: idClickUser,
currentUserId: currentUserId,
UIDConversation: UIDConversation
},
success: function (data) {
connect(UIDConversation);
$.each(data, function (key, value) {
if (value.name === userName) {
printMsg(value.msg, value.formatDate);
} else {
showMessage(value.name, value.msg, value.formatDate);
}
});
}
});
});
});
function connect(chatUID) {
var socket = new SockJS('/hello');
stompClient = Stomp.over(socket);
stompClient.connect({}, function (frame) {
console.log('Connected: ' + frame);
stompClient.subscribe('/topic/chat/' + chatUID, function (message) {
showMessage(JSON.parse(message.body).name,
JSON.parse(message.body).msg,
JSON.parse(message.body).formatDate);
});
});
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
На странице есть 2 таблицы, мне туда нужно вставлять ордера из БД, делаю с помощью ajaxДанные вставляются, но почему-то первый столбец в таблице...
Задача Есть инпут, который принимает текст в формате дате в виде ДДММ
Делаю 2 типа менюКакое из них загрузится пользователю решается с помощью js относительно ширины экрана