var settings = {} $(function updateTime () { $('#time').html(getCurTime()); setTimeout(updateTime,'1000'); 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) 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) { if (e.keyCode === 13) { e.preventDefault(); e.stopPropagation(); e.stopImmediatePropagation(); var input = ($('#input').val()); $('#input').val(''); var command = inputParser(input) return (commands[command.method] || commands.badcommand)(settings, command.params) } }); });