Hello
Im using callobaration engine to implement the chat.
MessagePersister messagePersister = new MessagePersister(chatBusinessService);
messagePersister.setUserInfo(userInfo);
messagePersister.setUser(user);
CollaborationMessageList messageList = new CollaborationMessageList(userInfo, chatGroup.getId(), messagePersister);
CollaborationMessageInput messageInput = new CollaborationMessageInput(messageList);
The persister:
public MessagePersister(final ChatBusinessService chatBusinessService)
{
this.chatBusinessService = chatBusinessService;
}
@Override
public Stream<CollaborationMessage> fetchMessages(FetchQuery query)
{
ChatMessageService messageService = (ChatMessageService) chatBusinessService.getService(ChatMessageService.class);
return messageService.getAllMessagesSince(query.getTopicId(), query.getSince())
.stream()
.map(messageEntity ->
{
try
{
messageService.save(messageEntity);
}
catch (Exception e)
{
throw new RuntimeException(e);
}
UserInfo sender = new UserInfo(messageEntity.getSenderId(), null, null);
CollaborationMessage message = new CollaborationMessage(
sender,
messageEntity.getText(),
messageEntity.getCreatedAt().toInstant(ZoneOffset.UTC)
);
return message;
});
}
@Override
public void persistMessage(PersistRequest request)
{
ChatMessageService messageService = (ChatMessageService) chatBusinessService.getService(ChatMessageService.class);
CollaborationMessage message = request.getMessage();
ChatMessage messageEntity = new ChatMessage();
ChatGroup chatGroup = new ChatGroup();
chatGroup.setId(request.getTopicId());
messageEntity.setChatGroup(chatGroup);
messageEntity.setText(message.getText());
messageEntity.setSenderId(user.getId());
messageEntity.setCreatedAt(LocalDateTime.now());
messageEntity.setRead(false);
try
{
messageService.save(messageEntity);
}
catch (Exception e)
{
throw new RuntimeException(e);
}
}
In this implementation, topicId is the same for chat users and the messages are being saved in database. But I have a problem - when user1 sends message to the chat and it is saved in db, it doesn’t reflect automatically in a chat for the user2.
Can anyone suggest the possible problem please?