| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133 |
- var WebSocketService = function(model, webSocket) {
- var webSocketService = this;
-
- var webSocket = webSocket;
- var model = model;
-
- this.hasConnection = false;
-
- this.welcomeHandler = function(data) {
- webSocketService.hasConnection = true;
-
- model.userTadpole.id = data.id;
- model.tadpoles[data.id] = model.tadpoles[-1];
- delete model.tadpoles[-1];
-
- $('#chat').initChat();
- if($.cookie('todpole_name')) {
- webSocketService.sendMessage('name:'+$.cookie('todpole_name'));
- }
- };
-
- this.updateHandler = function(data) {
- var newtp = false;
-
- if(!model.tadpoles[data.id]) {
- newtp = true;
- model.tadpoles[data.id] = new Tadpole();
- model.arrows[data.id] = new Arrow(model.tadpoles[data.id], model.camera);
- }
-
- var tadpole = model.tadpoles[data.id];
-
- if(tadpole.id == model.userTadpole.id) {
- tadpole.name = data.name;
- return;
- } else {
- tadpole.name = data.name;
- }
-
- if(newtp) {
- tadpole.x = data.x;
- tadpole.y = data.y;
- } else {
- tadpole.targetX = data.x;
- tadpole.targetY = data.y;
- }
-
- tadpole.angle = data.angle;
- tadpole.momentum = data.momentum;
-
- tadpole.timeSinceLastServerUpdate = 0;
- }
-
- this.messageHandler = function(data) {
- var tadpole = model.tadpoles[data.id];
- if(!tadpole) {
- return;
- }
- tadpole.timeSinceLastServerUpdate = 0;
- tadpole.messages.push(new Message(data.message));
- }
-
- this.closedHandler = function(data) {
- if(model.tadpoles[data.id]) {
- delete model.tadpoles[data.id];
- delete model.arrows[data.id];
- }
- }
-
- this.redirectHandler = function(data) {
- if (data.url) {
- if (authWindow) {
- authWindow.document.location = data.url;
- } else {
- document.location = data.url;
- }
- }
- }
-
- this.processMessage = function(data) {
- var fn = webSocketService[data.type + 'Handler'];
- if (fn) {
- fn(data);
- }
- }
-
- this.connectionClosed = function() {
- webSocketService.hasConnection = false;
- $('#cant-connect').fadeIn(300);
- };
-
- this.sendUpdate = function(tadpole) {
- var sendObj = {
- type: 'update',
- x: tadpole.x.toFixed(1),
- y: tadpole.y.toFixed(1),
- angle: tadpole.angle.toFixed(3),
- momentum: tadpole.momentum.toFixed(3)
- };
-
- if(tadpole.name) {
- sendObj['name'] = tadpole.name;
- }
-
- webSocket.send(JSON.stringify(sendObj));
- }
-
- this.sendMessage = function(msg) {
- var regexp = /name: ?(.+)/i;
- if(regexp.test(msg)) {
- model.userTadpole.name = msg.match(regexp)[1];
- $.cookie('todpole_name', model.userTadpole.name, {expires:14});
- return;
- }
-
- var sendObj = {
- type: 'message',
- message: msg
- };
-
- webSocket.send(JSON.stringify(sendObj));
- }
-
- this.authorize = function(token,verifier) {
- var sendObj = {
- type: 'authorize',
- token: token,
- verifier: verifier
- };
-
- webSocket.send(JSON.stringify(sendObj));
- }
- }
|