diff options
-rw-r--r-- | webchat/hello_web.js | 24 | ||||
-rw-r--r-- | webchat/public/client.js | 25 |
2 files changed, 35 insertions, 14 deletions
diff --git a/webchat/hello_web.js b/webchat/hello_web.js index aa580652..6f658901 100644 --- a/webchat/hello_web.js +++ b/webchat/hello_web.js @@ -47,18 +47,24 @@ irc_client.on('message#krebs', function(from, message) { var echo = sockjs.createServer(); echo.on('connection', function(conn) { - var name = '['+conn.remoteAddress+':'+conn.remotePort+']'; + var origin = '['+conn.remoteAddress+':'+conn.remotePort+']'; Clients.push(conn); - Clients.broadcast({from: 'system', message: name + ' has joined'}) irc_client.say("#krebs", name + ' has joined'); -conn.write(JSON.stringify({from: 'system', message: 'hello'})) - conn.on('data', function(message) { - console.log('data:',message); + Clients.broadcast({from: 'system', message: origin + ' has joined'}) + conn.write(JSON.stringify({from: 'system', message: 'hello'})) + conn.on('data', function(data) { + console.log('data:',data); try { - var object = JSON.parse(message); - object.from = name + var object = JSON.parse(data); + if (/^\/nick\s+(.+)$/.test(object.message)) { + object.from = origin; + } else if (typeof object.nick === 'string') { + object.from = object.nick; + } else { + object.from = origin; + }; console.log(object.message); - irc_client.say("#krebs", name + ' → ' + object.message); + irc_client.say("#krebs", object.from + ' → ' + object.message); Clients.broadcast(object); } catch (error) { @@ -67,8 +73,8 @@ conn.write(JSON.stringify({from: 'system', message: 'hello'})) }); conn.on('close', function() { Clients.splice(Clients.indexOf(conn)); - Clients.broadcast({from: 'system', message: name + ' has quit'}) irc_client.say("#krebs", name + ' has quit'); + Clients.broadcast({from: 'system', message: origin + ' has quit'}) }); }); diff --git a/webchat/public/client.js b/webchat/public/client.js index 6bcb24cd..95b67ad0 100644 --- a/webchat/public/client.js +++ b/webchat/public/client.js @@ -1,7 +1,15 @@ -function replaceURLWithHTMLLinks(text) { +function replaceURLWithHTMLLinks (text) { var exp = /(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig; return text.replace(exp,"<a href='$1'>$1</a>"); } +function setMaybeNick (input) { + var match = /^\/nick\s+(.+)$/.exec(input); + if (match) { + nick = match[1]; + } +} + +var nick; $(function connect() { sock = new SockJS('/echo'); @@ -34,14 +42,21 @@ $(function connect() { }); $(function() { - $("#input").keydown(function(e) { - if( e.keyCode === 13) { + $('#input').keydown(function(e) { + if (e.keyCode === 13) { e.preventDefault(); e.stopPropagation(); e.stopImmediatePropagation(); - sock.send(JSON.stringify({ + setMaybeNick($('#input').val()); + var sendObj = { message: $('#input').val(), - })); + }; + + if (typeof nick === 'string') { + sendObj.nick = nick; + }; + + sock.send(JSON.stringify(sendObj)); $('#input').val(''); return; } |