diff client.js @ 0:2a8d4e8600d0

Initial commit.
author Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
date Fri, 21 Dec 2018 21:34:17 +0100
parents
children d6df73b466f6
line wrap: on
line diff
new file mode 100644
--- /dev/null
+++ b/client.js
@@ -0,0 +1,70 @@
+'use strict';
+
+const BOSH_SERVICE = 'https://bosh.linkmauve.fr/';
+
+function rawInput(data)
+{
+    console.log('RECV', data);
+}
+
+function rawOutput(data)
+{
+    console.log('SENT', data);
+}
+
+document.addEventListener('DOMContentLoaded', function () {
+    const connection = new Strophe.Connection(BOSH_SERVICE);
+    connection.rawInput = rawInput;
+    connection.rawOutput = rawOutput;
+
+    const jid_element = document.getElementById('jid');
+    const pass_element = document.getElementById('pass');
+    const connect_button = document.getElementById('connect');
+
+    const connected_div = document.getElementById('connected');
+
+    const avatar_img = document.getElementById('avatar');
+
+    connect_button.addEventListener('click', function (evt) {
+        if (connect_button.value == 'connect') {
+            connection.connect(jid_element.value,
+                               pass_element.value,
+                               onConnect);
+        } else {
+            connection.disconnect();
+        }
+        evt.preventDefault();
+    });
+
+    function onConnect(status)
+    {
+        if (status == Strophe.Status.CONNECTING) {
+            console.log('Strophe is connecting.');
+            connect_button.value = 'disconnect';
+            jid_element.disabled = true;
+            pass_element.disabled = true;
+        } else if (status == Strophe.Status.CONNFAIL) {
+            console.log('Strophe failed to connect.');
+            connect_button.value = 'connect';
+            jid_element.disabled = false;
+            pass_element.disabled = false;
+        } else if (status == Strophe.Status.DISCONNECTING) {
+            console.log('Strophe is disconnecting.');
+        } else if (status == Strophe.Status.DISCONNECTED) {
+            console.log('Strophe is disconnected.');
+            connect_button.value = 'connect';
+            jid_element.disabled = false;
+            pass_element.disabled = false;
+        } else if (status == Strophe.Status.CONNECTED) {
+            console.log('Strophe is connected.');
+            onConnected();
+        }
+    }
+
+    function onConnected()
+    {
+        connected_div.hidden = false;
+        initNickname(connection);
+        initAvatar(connection);
+    }
+});