1 | var BOSH_SERVICE = '/xmpp-httpbind'; |
---|
2 | var connection = null; |
---|
3 | |
---|
4 | function log(msg) |
---|
5 | { |
---|
6 | $('#log').append('<div></div>').append(document.createTextNode(msg)); |
---|
7 | } |
---|
8 | |
---|
9 | function onConnect(status) |
---|
10 | { |
---|
11 | if (status == Strophe.Status.CONNECTING) { |
---|
12 | log('Strophe is connecting.'); |
---|
13 | } else if (status == Strophe.Status.CONNFAIL) { |
---|
14 | log('Strophe failed to connect.'); |
---|
15 | $('#connect').get(0).value = 'connect'; |
---|
16 | } else if (status == Strophe.Status.DISCONNECTING) { |
---|
17 | log('Strophe is disconnecting.'); |
---|
18 | } else if (status == Strophe.Status.DISCONNECTED) { |
---|
19 | log('Strophe is disconnected.'); |
---|
20 | $('#connect').get(0).value = 'connect'; |
---|
21 | } else if (status == Strophe.Status.CONNECTED) { |
---|
22 | log('Strophe is connected.'); |
---|
23 | log('ECHOBOT: Send a message to ' + connection.jid + |
---|
24 | ' to talk to me.'); |
---|
25 | |
---|
26 | connection.addHandler(onMessage, null, 'message', null, null, null); |
---|
27 | connection.send($pres().tree()); |
---|
28 | } |
---|
29 | } |
---|
30 | |
---|
31 | function onMessage(msg) { |
---|
32 | var to = msg.getAttribute('to'); |
---|
33 | var from = msg.getAttribute('from'); |
---|
34 | var type = msg.getAttribute('type'); |
---|
35 | var elems = msg.getElementsByTagName('body'); |
---|
36 | |
---|
37 | if (type == "chat" && elems.length > 0) { |
---|
38 | var body = elems[0]; |
---|
39 | |
---|
40 | log('ECHOBOT: I got a message from ' + from + ': ' + |
---|
41 | Strophe.getText(body)); |
---|
42 | |
---|
43 | var reply = $msg({to: from, from: to, type: 'chat'}) |
---|
44 | .cnode(Strophe.copyElement(body)); |
---|
45 | connection.send(reply.tree()); |
---|
46 | |
---|
47 | log('ECHOBOT: I sent ' + from + ': ' + Strophe.getText(body)); |
---|
48 | } |
---|
49 | |
---|
50 | // we must return true to keep the handler alive. |
---|
51 | // returning false would remove it after it finishes. |
---|
52 | return true; |
---|
53 | } |
---|
54 | |
---|
55 | $(document).ready(function () { |
---|
56 | connection = new Strophe.Connection(BOSH_SERVICE); |
---|
57 | |
---|
58 | // Uncomment the following lines to spy on the wire traffic. |
---|
59 | //connection.rawInput = function (data) { log('RECV: ' + data); }; |
---|
60 | //connection.rawOutput = function (data) { log('SEND: ' + data); }; |
---|
61 | |
---|
62 | // Uncomment the following line to see all the debug output. |
---|
63 | //Strophe.log = function (level, msg) { log('LOG: ' + msg); }; |
---|
64 | |
---|
65 | |
---|
66 | $('#connect').bind('click', function () { |
---|
67 | var button = $('#connect').get(0); |
---|
68 | if (button.value == 'connect') { |
---|
69 | button.value = 'disconnect'; |
---|
70 | |
---|
71 | connection.connect($('#jid').get(0).value, |
---|
72 | $('#pass').get(0).value, |
---|
73 | onConnect); |
---|
74 | } else { |
---|
75 | button.value = 'connect'; |
---|
76 | connection.disconnect(); |
---|
77 | } |
---|
78 | }); |
---|
79 | }); |
---|