-
Notifications
You must be signed in to change notification settings - Fork 249
/
rtt-demo.html
41 lines (31 loc) · 1.15 KB
/
rtt-demo.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<script src="../dist/stanza.browser.js"></script>
<h2>Input Buffer:</h2>
<textarea id="textInput" rows="5" cols="72"></textarea>
<h2>Display Buffer:</h2>
<p id="textOutput"></p>
<script>
const inputBuffer = new XMPP.RTT.InputBuffer();
inputBuffer.start();
// Use oninput to capture updates from non-keypress actions,
// such as copy/pasting or autocorrect
textInput.oninput = function(e) {
inputBuffer.update(e.target.value);
};
const displayBuffer = new XMPP.RTT.DisplayBuffer(state => {
console.log(state);
textOutput.textContent = state.text;
});
setInterval(() => {
const diff = inputBuffer.diff();
if (diff) {
console.log(diff);
// To send diff to peer:
// client.sendMessage({ rtt: diff, to: ... });
// Upon receiving diff from peer:
// client.on('rtt', msg => { displayBuffer.process(msg.rtt); });
// To reset the display buffer after the final message is received:
// client.on('chat', msg => { displayBuffer.commit(); });
displayBuffer.process(diff);
}
}, 700);
</script>