diff options
Diffstat (limited to 'webchat')
-rw-r--r-- | webchat/index.js | 63 | ||||
-rw-r--r-- | webchat/public/client.js | 5 | ||||
-rw-r--r-- | webchat/public/commands.js | 1 |
3 files changed, 31 insertions, 38 deletions
diff --git a/webchat/index.js b/webchat/index.js index 70b32d14..3bd92198 100644 --- a/webchat/index.js +++ b/webchat/index.js @@ -7,7 +7,18 @@ var irc = require('irc'); var make_sockjs_server_connection_transport = require('./sockjs_server_connection_transport.js') var RPC = require('./public/rpc.js'); +function pluck (key) { + return function (object) { + return object[key] + } +} + var clients = []; +clients.broadcast = function (method, params) { + clients.map(pluck('rpc')).forEach(function (rpc) { + rpc.send(method, params) + }) +} var irc_reconnect = function() { //reconnt to irc console.log("reconnecting due to pingtimeout") @@ -42,50 +53,32 @@ irc_client.on('ping', function(server) { //restart timer on server ping irc_client.on('message#krebs', function(from, message) { console.log({ from: from, message: message }); - clients.map(pluck('rpc')).forEach(function (rpc) { - rpc.send('msg', {nick: from, msg: message}) - }) + clients.broadcast('msg', {nick: from, msg: message}) clearTimeout(lastping); }); irc_client.on('names#krebs', function(nicks) { - clients.map(pluck('rpc')).forEach(function (rpc) { - Object.keys(nicks).forEach(function (nick) { - rpc.send('join', {type: 'irc', nick: nick}) - }) + Object.keys(nicks).forEach(function (nick) { + clients.broadcast('join', {type: 'irc', nick: nick}) }) -}); +}) irc_client.on('join#krebs', function(nick, msg) { if (nick !== 'kweb'){ - clients.map(pluck('rpc')).forEach(function (rpc) { - rpc.send('join', {type: 'irc', nick: nick}) - }) + clients.broadcast('join', {type: 'irc', nick: nick}) } }) irc_client.on('part#krebs', function(nick, rs, msg) { - clients.map(pluck('rpc')).forEach(function (rpc) { - rpc.send('part', {type: 'irc', nick: nick}) - }) + clients.broadcast('quit', {type: 'irc', nick: nick}) }); irc_client.on('error', function (error) { console.log('irc-client error', error) }) -var web_serv_options = { //certificates for https - key: fs.readFileSync(__dirname+'/local_config/server_npw.key'), - cert: fs.readFileSync(__dirname+'/local_config/server.crt'), -}; - var echo = sockjs.createServer(); -function pluck (key) { - return function (object) { - return object[key] - } -} var total_clients_ever_connected = 0 echo.on('connection', function (connection) { @@ -95,9 +88,7 @@ echo.on('connection', function (connection) { client.rpc.send('your_nick', {nick: client.nick}) client.rpc.register('msg', {msg: 'string'}, function (params, callback) { callback(null) - clients.map(pluck('rpc')).forEach(function (rpc) { - rpc.send('msg', {type: 'web', nick: client.nick, msg: params.msg}) - }) + clients.broadcast('msg', {type: 'web', nick: client.nick, msg: params.msg}) }) client.rpc.register('nick', {nick: 'string'}, function (params, callback) { if (!!~clients.map(pluck('nick')).indexOf(params.nick)) { @@ -108,16 +99,12 @@ echo.on('connection', function (connection) { var oldnick = client.nick client.nick = params.nick callback(null) - clients.map(pluck('rpc')).forEach(function (rpc) { - rpc.send('nick', {type: 'web', newnick: client.nick, oldnick: oldnick}) - }) + clients.broadcast('nick', {type: 'web', newnick: client.nick, oldnick: oldnick}) } }) connection.on('close', function() { //propagate if client quits the page clients.splice(clients.indexOf(client)); - clients.map(pluck('rpc')).forEach(function (rpc) { - rpc.send('part', {type: 'web', nick: client.nick}) - }) + clients.broadcast('part', {type: 'web', nick: client.nick}) }) //send nicklist to newly joined client clients.map(pluck('nick')).forEach(function (nick) { @@ -126,10 +113,7 @@ echo.on('connection', function (connection) { //add new client to list clients.push(client) //send all including the new client the join - clients.map(pluck('rpc')).forEach(function (rpc) { - rpc.send('join', {type: 'web', nick: client.nick}) - }) - + clients.broadcast('join', {type: 'web', nick: client.nick}) }) var app = connect() @@ -161,6 +145,11 @@ var app = connect() res.end(page_template); }) + +var web_serv_options = { //certificates for https + key: fs.readFileSync(__dirname+'/local_config/server_npw.key'), + cert: fs.readFileSync(__dirname+'/local_config/server.crt'), +}; var server = http.createServer(web_serv_options, app); echo.installHandlers(server, {prefix:'/echo'}); server.listen(1337, '0.0.0.0'); 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 = $('<div/>').text(params.oldnick).html(); var safe_newnick = $('<div/>').text(params.newnick).html(); var safe_type = $('<div/>').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('<div class="'+safe_type+'_name">' + safe_newnick + '</div>') ; 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 = $('<div/>').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) { diff --git a/webchat/public/commands.js b/webchat/public/commands.js index d4408c4c..f19c78dc 100644 --- a/webchat/public/commands.js +++ b/webchat/public/commands.js @@ -9,7 +9,6 @@ commands.msg = function (settings, params) { } commands.nick = function (settings, params) { - settings.nick = params var sendObj = { method: 'nick', params: { nick: params }, |