Real Time Text is transmitted in the context of a chat session, which is usually a one-to-one chat session, but can also be a multi-user chat.
So first you need to retrieve a Chat instance, e.g. as follows:
Chat chat = xmppClient.getManager(ChatManager.class).createChatSession(Jid.of("juliet@example.net"));
Next, create an OutboundRealTimeMessage object. It takes care of various aspects of real-time text, like:
RealTimeTextManager realTimeTextManager = xmppClient.getManager(RealTimeTextManager.class); OutboundRealTimeMessage realTimeMessage = realTimeTextManager.createRealTimeMessage(chat);
Then whenever text changes, update the message. Here’s an example with a JavaFX TextArea:
textArea.textProperty().addListener((observable, oldValue, newValue) -> { realTimeMessage.update(newValue); });
When done, it is important to commit the message (i.e. sending a backwards-compatible message with a <body/> element), which also shuts down executors, which were responsible for the transmission:
realTimeMessage.commit();
Most likely you now want to start a new real time message and clear the TextArea:
realTimeMessage = realTimeTextManager.createRealTimeMessage(chat); textArea.clear();
realTimeTextManager.addRealTimeMessageListener(e -> { InboundRealTimeMessage inboundRealTimeMessage = e.getRealTimeMessage(); // Here route the message correctly to the sender's UI interface, using inboundRealTimeMessage.getFrom() inboundRealTimeMessage.addRealTimeTextChangeListener(t -> System.out.println(t.getText())); });