From 2d823c8f8557f0a49e4307717e99a90b24052e9c Mon Sep 17 00:00:00 2001 From: lassulus Date: Fri, 8 Nov 2013 13:15:52 +0100 Subject: webchat: refactored code --- webchat/public/client.js | 58 ++++++------------------------------------------ 1 file changed, 7 insertions(+), 51 deletions(-) (limited to 'webchat/public/client.js') diff --git a/webchat/public/client.js b/webchat/public/client.js index ca71b537..4842d9c2 100644 --- a/webchat/public/client.js +++ b/webchat/public/client.js @@ -1,34 +1,4 @@ -function replaceURLWithHTMLLinks (text) { - var exp = /(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig; - return text.replace(exp,"$1"); -} -function setMaybeNick (input) { - var match = /^\/nick\s+(.+)$/.exec(input); - if (match) { - nick = match[1]; - $('#nick').html(nick); - } -} - -function getCurTime () { - date = new Date; - h = date.getHours(); - if(h<10) - { - h = "0"+h; - } - m = date.getMinutes(); - if(m<10) - { - m = "0"+m; - } - s = date.getSeconds(); - if(s<10) - { - s = "0"+s; - } - return ''+h+':'+m+':'+s; -}; +var settings = {} $(function updateTime () { $('#time').html(getCurTime()); @@ -36,8 +6,6 @@ $(function updateTime () { return true; }); -var nick; - $(function connect() { sock = new SockJS('/echo'); @@ -50,16 +18,11 @@ $(function connect() { try { var object = JSON.parse(e.data); console.log(object.message); - var safe_message = $('
').text(object.message).html(); - safe_message = replaceURLWithHTMLLinks(safe_message); - var safe_from = $('
').text(object.from).html(); - $(''+getCurTime()+''+safe_from+''+safe_message+'').insertBefore('#foot'); - - var elem = document.getElementById('chatter'); - elem.scrollTop = elem.scrollHeight; + clientParser(object); } catch (error) { console.log(error); + throw error; } }; sock.onclose = function(event) { @@ -77,18 +40,11 @@ $(function() { e.preventDefault(); e.stopPropagation(); e.stopImmediatePropagation(); - setMaybeNick($('#input').val()); - var sendObj = { - message: $('#input').val(), - }; - - if (typeof nick === 'string') { - sendObj.nick = nick; - }; - - sock.send(JSON.stringify(sendObj)); + var input = ($('#input').val()); $('#input').val(''); - return; + + var command = inputParser(input) + return (commands[command.method] || commands.badcommand)(settings, command.params) } }); -- cgit v1.2.3 From 24efdc59cb58c5bbfa49516088fe124bc9f431c1 Mon Sep 17 00:00:00 2001 From: lassulus Date: Mon, 11 Nov 2013 17:46:27 +0100 Subject: webchat: still refactoring --- webchat/public/client.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'webchat/public/client.js') diff --git a/webchat/public/client.js b/webchat/public/client.js index 4842d9c2..5e0202a1 100644 --- a/webchat/public/client.js +++ b/webchat/public/client.js @@ -17,7 +17,7 @@ $(function connect() { console.log('message', e.data); try { var object = JSON.parse(e.data); - console.log(object.message); + console.log(object); clientParser(object); } catch (error) { -- cgit v1.2.3 From c6a7cd9027150fca42500b3bbc78be01993856f6 Mon Sep 17 00:00:00 2001 From: lassulus Date: Mon, 11 Nov 2013 20:16:45 +0100 Subject: webchat: request handling --- webchat/public/client.js | 42 +++++++++++++++++++++++++++++++++++------- 1 file changed, 35 insertions(+), 7 deletions(-) (limited to 'webchat/public/client.js') diff --git a/webchat/public/client.js b/webchat/public/client.js index 5e0202a1..8f7becb7 100644 --- a/webchat/public/client.js +++ b/webchat/public/client.js @@ -6,26 +6,54 @@ $(function updateTime () { return true; }); +var gensym = (function () { + var i = 0 + return function () { + return ++i; + } +})() + +settings.waiting_callbacks = {} + +function request (settings, method, params, callback) { + var id = gensym() + settings.waiting_callbacks[id] = callback + settings.sock.send({method: method, params: params, id: id}); +} + $(function connect() { - sock = new SockJS('/echo'); + settings.sock = new SockJS('/echo'); - sock.onopen = function() { + settings.sock.onopen = function() { console.log('open'); - sock.send('open'); + request(settings, 'coi', {}, function (error, result) { + if (error) { + console.log('coi error', error) + } else { + settings.nick = result.nick //TODO: write to display + settings.addr = result.addr //TODO: write to display + } + }) }; - sock.onmessage = function(e) { + settings.sock.onmessage = function(e) { console.log('message', e.data); try { var object = JSON.parse(e.data); console.log(object); - clientParser(object); } catch (error) { console.log(error); throw error; } - }; - sock.onclose = function(event) { + if (typeof object.method === 'string') { + return methodDispatcher(settings, object); + } else if (typeof object.result === 'string') { + return resultDispatcher(settings, object); + } else { + console.log('bad message:', object) + } + } + settings.sock.onclose = function(event) { console.log('close'); switch (event.code) { case 1006: //abnormal closure -- cgit v1.2.3 From 3531d46cc3644a64b990f904e40e4846b8242a07 Mon Sep 17 00:00:00 2001 From: lassulus Date: Tue, 12 Nov 2013 02:01:29 +0100 Subject: webchat: refactor to rpc --- webchat/public/client.js | 75 ++++++++++++++++++++++++------------------------ 1 file changed, 37 insertions(+), 38 deletions(-) (limited to 'webchat/public/client.js') diff --git a/webchat/public/client.js b/webchat/public/client.js index 8f7becb7..8865fcc0 100644 --- a/webchat/public/client.js +++ b/webchat/public/client.js @@ -23,44 +23,43 @@ function request (settings, method, params, callback) { $(function connect() { settings.sock = new SockJS('/echo'); - - settings.sock.onopen = function() { - console.log('open'); - request(settings, 'coi', {}, function (error, result) { - if (error) { - console.log('coi error', error) - } else { - settings.nick = result.nick //TODO: write to display - settings.addr = result.addr //TODO: write to display - } - }) - }; - settings.sock.onmessage = function(e) { - console.log('message', e.data); - try { - var object = JSON.parse(e.data); - console.log(object); - - } catch (error) { - console.log(error); - throw error; - } - if (typeof object.method === 'string') { - return methodDispatcher(settings, object); - } else if (typeof object.result === 'string') { - return resultDispatcher(settings, object); - } else { - console.log('bad message:', object) - } - } - settings.sock.onclose = function(event) { - console.log('close'); - switch (event.code) { - case 1006: //abnormal closure - return setTimeout(connect, 1000); - }; - }; - + var transport = make_sockjs_client_transport(settings.sock) + var rpc = new RPC(transport) + rpc.register('msg', {type: 'string', nick: 'string', msg: 'string'}, function(params, callback) { + var safe_message = $('
').text(params.msg).html(); + safe_message = replaceURLWithHTMLLinks(safe_message); + var safe_from = $('
').text(params.nick).html(); + chatboxAppend(safe_from, safe_message, 'web_msg') + return callback(null) + }) + rpc.register('nick', {type: 'string', newnick: 'string', oldnick: 'string'}, function(params, callback) { + var safe_oldnick = $('
').text(params.oldnick).html(); + var safe_newnick = $('
').text(params.newnick).html(); + var safe_type = $('
').text(params.type).html(); + $(getNicklistElement(safe_oldnick,safe_type)).remove(); + $('#nicklist').append('
' + safe_newnick + '
') ; + chatboxAppend(safe_oldnick, 'is now known as ' + safe_newnick, 'nick'); + return callback(null) + }) + rpc.register('your_nick', {nick: 'string'}, function(params, callback) { + var safe_nick = $('
').text(params.nick).html(); + settings.nick = safe_nick + return callback(null) + }) + rpc.register('join', {type: 'string', nick: 'string'}, function(params, callback) { + var safe_nick = $('
').text(params.nick).html(); + var safe_type = $('
').text(params.type).html(); + $('#nicklist').append('
' + safe_nick + '
') ; + chatboxAppend(safe_nick, 'has joined'); + return callback(null) + }) + rpc.register('part', {type: 'string', nick: 'string'}, function(params, callback) { + var safe_nick = $('
').text(params.nick).html(); + var safe_type = $('
').text(params.type).html(); + $(getNicklistElement(safe_nick,safe_type)).remove(); + chatboxAppend(safe_nick, 'has parted'); + return callback(null) + }) }); $(function() { $('#input').keydown(function(e) { -- cgit v1.2.3 From fc72fda5fc46daea25a991ba6b907a793e52ed06 Mon Sep 17 00:00:00 2001 From: lassulus Date: Tue, 12 Nov 2013 02:06:24 +0100 Subject: webchat: remove cruft --- webchat/public/client.js | 13 ------------- 1 file changed, 13 deletions(-) (limited to 'webchat/public/client.js') diff --git a/webchat/public/client.js b/webchat/public/client.js index 8865fcc0..a90cf8d6 100644 --- a/webchat/public/client.js +++ b/webchat/public/client.js @@ -6,21 +6,8 @@ $(function updateTime () { return true; }); -var gensym = (function () { - var i = 0 - return function () { - return ++i; - } -})() - settings.waiting_callbacks = {} -function request (settings, method, params, callback) { - var id = gensym() - settings.waiting_callbacks[id] = callback - settings.sock.send({method: method, params: params, id: id}); -} - $(function connect() { settings.sock = new SockJS('/echo'); var transport = make_sockjs_client_transport(settings.sock) -- cgit v1.2.3 From a170673b55215137b5e7fe19e587767c2ef57453 Mon Sep 17 00:00:00 2001 From: lassulus Date: Tue, 12 Nov 2013 02:48:45 +0100 Subject: webchat: refactor code --- webchat/public/client.js | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'webchat/public/client.js') diff --git a/webchat/public/client.js b/webchat/public/client.js index a90cf8d6..58002f78 100644 --- a/webchat/public/client.js +++ b/webchat/public/client.js @@ -23,6 +23,10 @@ $(function connect() { var safe_oldnick = $('
').text(params.oldnick).html(); var safe_newnick = $('
').text(params.newnick).html(); var safe_type = $('
').text(params.type).html(); + if (safe_oldnick === settings.nick){ + settings.nick = safe_newnick + $('#nick').html(settings.nick) + } $(getNicklistElement(safe_oldnick,safe_type)).remove(); $('#nicklist').append('
' + safe_newnick + '
') ; chatboxAppend(safe_oldnick, 'is now known as ' + safe_newnick, 'nick'); @@ -31,6 +35,7 @@ $(function connect() { rpc.register('your_nick', {nick: 'string'}, function(params, callback) { var safe_nick = $('
').text(params.nick).html(); settings.nick = safe_nick + $('#nick').html(settings.nick) return callback(null) }) rpc.register('join', {type: 'string', nick: 'string'}, function(params, callback) { -- cgit v1.2.3 From 721b4fb1b32ee47f158fb3b9a1ad0747ff579044 Mon Sep 17 00:00:00 2001 From: lassulus Date: Tue, 12 Nov 2013 02:59:28 +0100 Subject: webchat: remove input parser --- webchat/public/client.js | 100 ++++++++++++++++++++++++----------------------- 1 file changed, 52 insertions(+), 48 deletions(-) (limited to 'webchat/public/client.js') diff --git a/webchat/public/client.js b/webchat/public/client.js index 58002f78..d7a5ecab 100644 --- a/webchat/public/client.js +++ b/webchat/public/client.js @@ -1,4 +1,50 @@ var settings = {} +settings.sock = new SockJS('/echo'); +settings.waiting_callbacks = {} + +var transport = make_sockjs_client_transport(settings.sock) +var rpc = new RPC(transport) + +rpc.register('msg', {type: 'string', nick: 'string', msg: 'string'}, function(params, callback) { + var safe_message = $('
').text(params.msg).html(); + safe_message = replaceURLWithHTMLLinks(safe_message); + var safe_from = $('
').text(params.nick).html(); + chatboxAppend(safe_from, safe_message, 'web_msg') + return callback(null) +}) +rpc.register('nick', {type: 'string', newnick: 'string', oldnick: 'string'}, function(params, callback) { + var safe_oldnick = $('
').text(params.oldnick).html(); + var safe_newnick = $('
').text(params.newnick).html(); + var safe_type = $('
').text(params.type).html(); + if (safe_oldnick === settings.nick){ + settings.nick = safe_newnick + $('#nick').html(settings.nick) + } + $(getNicklistElement(safe_oldnick,safe_type)).remove(); + $('#nicklist').append('
' + safe_newnick + '
') ; + chatboxAppend(safe_oldnick, 'is now known as ' + safe_newnick, 'nick'); + return callback(null) +}) +rpc.register('your_nick', {nick: 'string'}, function(params, callback) { + var safe_nick = $('
').text(params.nick).html(); + settings.nick = safe_nick + $('#nick').html(settings.nick) + return callback(null) +}) +rpc.register('join', {type: 'string', nick: 'string'}, function(params, callback) { + var safe_nick = $('
').text(params.nick).html(); + var safe_type = $('
').text(params.type).html(); + $('#nicklist').append('
' + safe_nick + '
') ; + chatboxAppend(safe_nick, 'has joined'); + return callback(null) +}) +rpc.register('part', {type: 'string', nick: 'string'}, function(params, callback) { + var safe_nick = $('
').text(params.nick).html(); + var safe_type = $('
').text(params.type).html(); + $(getNicklistElement(safe_nick,safe_type)).remove(); + chatboxAppend(safe_nick, 'has parted'); + return callback(null) +}) $(function updateTime () { $('#time').html(getCurTime()); @@ -6,53 +52,7 @@ $(function updateTime () { return true; }); -settings.waiting_callbacks = {} -$(function connect() { - settings.sock = new SockJS('/echo'); - var transport = make_sockjs_client_transport(settings.sock) - var rpc = new RPC(transport) - rpc.register('msg', {type: 'string', nick: 'string', msg: 'string'}, function(params, callback) { - var safe_message = $('
').text(params.msg).html(); - safe_message = replaceURLWithHTMLLinks(safe_message); - var safe_from = $('
').text(params.nick).html(); - chatboxAppend(safe_from, safe_message, 'web_msg') - return callback(null) - }) - rpc.register('nick', {type: 'string', newnick: 'string', oldnick: 'string'}, function(params, callback) { - var safe_oldnick = $('
').text(params.oldnick).html(); - var safe_newnick = $('
').text(params.newnick).html(); - var safe_type = $('
').text(params.type).html(); - if (safe_oldnick === settings.nick){ - settings.nick = safe_newnick - $('#nick').html(settings.nick) - } - $(getNicklistElement(safe_oldnick,safe_type)).remove(); - $('#nicklist').append('
' + safe_newnick + '
') ; - chatboxAppend(safe_oldnick, 'is now known as ' + safe_newnick, 'nick'); - return callback(null) - }) - rpc.register('your_nick', {nick: 'string'}, function(params, callback) { - var safe_nick = $('
').text(params.nick).html(); - settings.nick = safe_nick - $('#nick').html(settings.nick) - return callback(null) - }) - rpc.register('join', {type: 'string', nick: 'string'}, function(params, callback) { - var safe_nick = $('
').text(params.nick).html(); - var safe_type = $('
').text(params.type).html(); - $('#nicklist').append('
' + safe_nick + '
') ; - chatboxAppend(safe_nick, 'has joined'); - return callback(null) - }) - rpc.register('part', {type: 'string', nick: 'string'}, function(params, callback) { - var safe_nick = $('
').text(params.nick).html(); - var safe_type = $('
').text(params.type).html(); - $(getNicklistElement(safe_nick,safe_type)).remove(); - chatboxAppend(safe_nick, 'has parted'); - return callback(null) - }) -}); $(function() { $('#input').keydown(function(e) { if (e.keyCode === 13) { @@ -62,8 +62,12 @@ $(function() { var input = ($('#input').val()); $('#input').val(''); - var command = inputParser(input) - return (commands[command.method] || commands.badcommand)(settings, command.params) + var match = /^\/([a-z]+)(?:\s+(.*\S))?\s*$/.exec(input) + if (match) { + return rpc.send(match[1], match[2]) + } else { + return rpc.send('msg', input) + } } }); -- cgit v1.2.3 From b749c216ae84f02330da7396135be11259ec12d9 Mon Sep 17 00:00:00 2001 From: lassulus Date: Tue, 12 Nov 2013 04:08:38 +0100 Subject: webchat: fix nicklist --- webchat/public/client.js | 22 +++++++++------------- 1 file changed, 9 insertions(+), 13 deletions(-) (limited to 'webchat/public/client.js') diff --git a/webchat/public/client.js b/webchat/public/client.js index d7a5ecab..54ccfe34 100644 --- a/webchat/public/client.js +++ b/webchat/public/client.js @@ -3,16 +3,16 @@ settings.sock = new SockJS('/echo'); settings.waiting_callbacks = {} var transport = make_sockjs_client_transport(settings.sock) -var rpc = new RPC(transport) +settings.rpc = new RPC(transport) -rpc.register('msg', {type: 'string', nick: 'string', msg: 'string'}, function(params, callback) { +settings.rpc.register('msg', {type: 'string', nick: 'string', msg: 'string'}, function(params, callback) { var safe_message = $('
').text(params.msg).html(); safe_message = replaceURLWithHTMLLinks(safe_message); var safe_from = $('
').text(params.nick).html(); chatboxAppend(safe_from, safe_message, 'web_msg') return callback(null) }) -rpc.register('nick', {type: 'string', newnick: 'string', oldnick: 'string'}, function(params, callback) { +settings.rpc.register('nick', {type: 'string', newnick: 'string', oldnick: 'string'}, function(params, callback) { var safe_oldnick = $('
').text(params.oldnick).html(); var safe_newnick = $('
').text(params.newnick).html(); var safe_type = $('
').text(params.type).html(); @@ -25,20 +25,20 @@ rpc.register('nick', {type: 'string', newnick: 'string', oldnick: 'string'}, fun chatboxAppend(safe_oldnick, 'is now known as ' + safe_newnick, 'nick'); return callback(null) }) -rpc.register('your_nick', {nick: 'string'}, function(params, callback) { +settings.rpc.register('your_nick', {nick: 'string'}, function(params, callback) { var safe_nick = $('
').text(params.nick).html(); settings.nick = safe_nick $('#nick').html(settings.nick) return callback(null) }) -rpc.register('join', {type: 'string', nick: 'string'}, function(params, callback) { +settings.rpc.register('join', {type: 'string', nick: 'string'}, function(params, callback) { var safe_nick = $('
').text(params.nick).html(); var safe_type = $('
').text(params.type).html(); $('#nicklist').append('
' + safe_nick + '
') ; chatboxAppend(safe_nick, 'has joined'); return callback(null) }) -rpc.register('part', {type: 'string', nick: 'string'}, function(params, callback) { +settings.rpc.register('part', {type: 'string', nick: 'string'}, function(params, callback) { var safe_nick = $('
').text(params.nick).html(); var safe_type = $('
').text(params.type).html(); $(getNicklistElement(safe_nick,safe_type)).remove(); @@ -60,14 +60,10 @@ $(function() { e.stopPropagation(); e.stopImmediatePropagation(); var input = ($('#input').val()); - $('#input').val(''); + $('#input').val('') - var match = /^\/([a-z]+)(?:\s+(.*\S))?\s*$/.exec(input) - if (match) { - return rpc.send(match[1], match[2]) - } else { - return rpc.send('msg', input) - } + var command = inputParser(input) + return (commands[command.method] || commands.badcommand)(settings, command.params) } }); -- cgit v1.2.3