From 0e6ac2f388188033dd46005bb16173f334f3e3fc Mon Sep 17 00:00:00 2001 From: Sung Choi Date: Tue, 21 May 2013 21:52:50 +0900 Subject: [PATCH] changes airbugserver.SocketManager to airbugserver.SocketIoManager clean up [airbug/airbug#89] Airbug. Airbug MVP Part I: Chat Basics --- .../js/src/AirBugConfiguration.js | 40 +++++++++----- .../airbugserver/js/src/Express/ExpressApp.js | 6 +++ .../js/src/SocketAPIs/ChatMessagesApi.js | 16 +++--- .../js/src/SocketAPIs/ConversationsApi.js | 10 +--- .../js/src/SocketAPIs/RoomsApi.js | 21 +++++--- .../js/src/SocketAPIs/UsersApi.js | 28 +++++----- .../{SocketManager.js => SocketIoManager.js} | 53 ++++++++----------- 7 files changed, 96 insertions(+), 78 deletions(-) rename projects/airbugserver/js/src/Sockets/{SocketManager.js => SocketIoManager.js} (78%) diff --git a/projects/airbugserver/js/src/AirBugConfiguration.js b/projects/airbugserver/js/src/AirBugConfiguration.js index 3e03f33..382d9cf 100644 --- a/projects/airbugserver/js/src/AirBugConfiguration.js +++ b/projects/airbugserver/js/src/AirBugConfiguration.js @@ -22,7 +22,7 @@ //@Require('airbugserver.ExpressApp') //@Require('airbugserver.ExpressServer') //@Require('airbugserver.ExpressRoutes') -//@Require('airbugserver.SocketManager') +//@Require('airbugserver.SocketIoManager') //@Require('airbugserver.SocketRoutes') //@Require('airbugserver.SocketsMap') //@Require('airbugserver.ChatMessagesApi') @@ -59,7 +59,7 @@ var AirBugServer = bugpack.require('airbugserver.AirBugServer'); var ExpressApp = bugpack.require('airbugserver.ExpressApp'); var ExpressServer = bugpack.require('airbugserver.ExpressServer'); var ExpressRoutes = bugpack.require('airbugserver.ExpressRoutes'); -var SocketManager = bugpack.require('airbugserver.SocketManager'); +var SocketIoManager = bugpack.require('airbugserver.SocketIoManager'); var SocketRoutes = bugpack.require('airbugserver.SocketRoutes'); var SocketsMap = bugpack.require('airbugserver.SocketsMap'); @@ -120,7 +120,23 @@ var AirBugConfiguration = Class.extend(Obj, { /** * @type {string} */ - this._configFilePath = path.resolve(__dirname, '../config.json');; + this._configFilePath = path.resolve(__dirname, '../config.json'); + + /** + * @type {ExpressApp} + */ + this._expressApp = null; + + /** + * @type {ExpressServer} + */ + this._expressServer = null; + + /** + * @type {SocketIoManager} + */ + this._socketIoManager = null; + }, @@ -156,11 +172,11 @@ var AirBugConfiguration = Class.extend(Obj, { }); }), $task(function(flow){ - console.log("Initializing socketManager"); + console.log("Initializing socketIoManager"); - _this._socketManager.initialize(function(error){ + _this._socketIoManager.initialize(function(error){ if(!error){ - console.log("socketManager initialized"); + console.log("socketIoManager initialized"); } flow.complete(error); }); @@ -259,11 +275,11 @@ var AirBugConfiguration = Class.extend(Obj, { }, /** - * @return {SocketManager} + * @return {SocketIoManager} */ - socketManager: function() { - this._socketManager = new SocketManager(); - return this._socketManager; + socketIoManager: function() { + this._socketIoManager = new SocketIoManager(); + return this._socketIoManager; }, /** @@ -342,7 +358,7 @@ annotate(AirBugConfiguration).with( property("config").ref("config"), property("expressServer").ref("expressServer"), property("mongoose").ref("mongoose"), - property("socketManager").ref("socketManager") + property("socketIoManager").ref("socketIoManager") ]), module("mongoose"), @@ -372,7 +388,7 @@ annotate(AirBugConfiguration).with( //------------------------------------------------------------------------------- // Sockets //------------------------------------------------------------------------------- - module("socketManager") + module("socketIoManager") .properties([ property("expressServer").ref("expressServer"), property("socketsMap").ref("socketsMap") diff --git a/projects/airbugserver/js/src/Express/ExpressApp.js b/projects/airbugserver/js/src/Express/ExpressApp.js index be37c8f..18708f5 100644 --- a/projects/airbugserver/js/src/Express/ExpressApp.js +++ b/projects/airbugserver/js/src/Express/ExpressApp.js @@ -9,6 +9,7 @@ //@Require('Class') //@Require('Obj') //@Require('Map') +//@Require('bugflow.BugFlow') //@Require('bugfs.BugFs') //@Require('airbugserver.SocketManager') @@ -40,6 +41,11 @@ var SocketManager = bugpack.require('airbugserver.SocketManager'); //var ClientJSServer = bugpack.require('clientjs.ClientJSServer'); + +//------------------------------------------------------------------------------- +// Simplify References +//------------------------------------------------------------------------------- + var $series = BugFlow.$series; var $task = BugFlow.$task; diff --git a/projects/airbugserver/js/src/SocketAPIs/ChatMessagesApi.js b/projects/airbugserver/js/src/SocketAPIs/ChatMessagesApi.js index 59f93cf..d063a6d 100644 --- a/projects/airbugserver/js/src/SocketAPIs/ChatMessagesApi.js +++ b/projects/airbugserver/js/src/SocketAPIs/ChatMessagesApi.js @@ -32,17 +32,17 @@ var Obj = bugpack.require('Obj'); var ChatMessagesApi = Class.extend(Obj, { - create: function(message){ - var newChatMessage = ChatMessage.create(message, function(){}); - RoomApi.sendMessage(newChatMessage); - }, + _constructor: function(){ + + this._super(); + + this.model = null; - update: function(){ - }, - destroy: function(){ - + create: function(message){ + var newChatMessage = ChatMessage.create(message, function(){}); + RoomApi.sendMessage(newChatMessage); } }); diff --git a/projects/airbugserver/js/src/SocketAPIs/ConversationsApi.js b/projects/airbugserver/js/src/SocketAPIs/ConversationsApi.js index 178a3e7..cf90ac7 100644 --- a/projects/airbugserver/js/src/SocketAPIs/ConversationsApi.js +++ b/projects/airbugserver/js/src/SocketAPIs/ConversationsApi.js @@ -32,16 +32,10 @@ var Obj = bugpack.require('Obj'); var ConversationsApi = Class.extend(Obj, { - create: function(){ + _constructor: function(){ - }, + this._super(); - update: function(){ - - }, - - destroy: function(){ - } }); diff --git a/projects/airbugserver/js/src/SocketAPIs/RoomsApi.js b/projects/airbugserver/js/src/SocketAPIs/RoomsApi.js index 8aa1cd0..839ccdf 100644 --- a/projects/airbugserver/js/src/SocketAPIs/RoomsApi.js +++ b/projects/airbugserver/js/src/SocketAPIs/RoomsApi.js @@ -36,9 +36,22 @@ var RoomsApi = Class.extend(Obj, { this._super(); + + //------------------------------------------------------------------------------- + // Dependencies + //------------------------------------------------------------------------------- + + /** + * @type {SocketsMap} + */ this.socketsMap = null; }, + + //------------------------------------------------------------------------------- + // Methods + //------------------------------------------------------------------------------- + /* * @param {Room} room **/ @@ -46,10 +59,6 @@ var RoomsApi = Class.extend(Obj, { var room = Room.create(room); }, - update: function(){ - - }, - addUserToRoom: function(){ }, @@ -65,8 +74,8 @@ var RoomsApi = Class.extend(Obj, { var room = Room.findById(); var roomMembers = room.membersList; roomMembers.forEach(function(roomMember){ - var userId = roomMember.userId; - sockets = socketsMap.findSocketsByUserId(userId); + var userId = roomMember.userId; //BUGBUG + sockets = socketsMap.findSocketsByUser(user); //BUGBUG sockets.forEach(function(socket){ socket.emit(eventName, data); }); diff --git a/projects/airbugserver/js/src/SocketAPIs/UsersApi.js b/projects/airbugserver/js/src/SocketAPIs/UsersApi.js index 8a4f0f8..12bda62 100644 --- a/projects/airbugserver/js/src/SocketAPIs/UsersApi.js +++ b/projects/airbugserver/js/src/SocketAPIs/UsersApi.js @@ -34,6 +34,8 @@ var UsersApi = Class.extend(Obj, { _constructor: function(){ this._super(); + // this.model = User; + // this.socketManager = SocketManager; }, @@ -56,7 +58,7 @@ var UsersApi = Class.extend(Obj, { } }; - // UsersApi.establishUser(userObj, callback); + // UsersApi.establishUser(userObj, callback); // create or update // set as currentUser var query = {email: userObj.email}; @@ -66,18 +68,18 @@ var UsersApi = Class.extend(Obj, { upsert: true }; - User.findOneAndUpdate(query, update, options, callback); - User.findByEmail(userObj.email, function(error, user){ - if(error){ - console.log(error); - } else { - if(!user){ - user = new User(userObj); - user.save(); - return user; - } - } - }); + User.findOneAndUpdate(query, update, options, callback); //cannot use pre post hooks with this method + // User.findByEmail(userObj.email, function(error, user){ + // if(error){ + // console.log(error); + // } else { + // if(!user){ + // user = new User(userObj); + // user.save(); + // return user; + // } + // } + // }); } }); diff --git a/projects/airbugserver/js/src/Sockets/SocketManager.js b/projects/airbugserver/js/src/Sockets/SocketIoManager.js similarity index 78% rename from projects/airbugserver/js/src/Sockets/SocketManager.js rename to projects/airbugserver/js/src/Sockets/SocketIoManager.js index ebacfe7..cd42a7a 100644 --- a/projects/airbugserver/js/src/Sockets/SocketManager.js +++ b/projects/airbugserver/js/src/Sockets/SocketIoManager.js @@ -4,7 +4,7 @@ //@Package('airbugserver') -//@Export('SocketManager') +//@Export('SocketIoManager') //@Require('Class') //@Require('Map') @@ -37,7 +37,7 @@ var UsersApi = bugpack.require('airbugserver.UsersApi'); // Declare Class //------------------------------------------------------------------------------- -var SocketManager = Class.extend(Obj, { +var SocketIoManager = Class.extend(Obj, { _constructor: function(){ @@ -69,12 +69,22 @@ var SocketManager = Class.extend(Obj, { return this; }, - enableSockets: function(cookieParser, sessionStore, sessionKey){ - var server = this.server; - var socketIoManager = this.socketIoManager; - var sessionToUserMap = this.sessionToUserMap; - var sessionToSocketsMap = this.socketsMap; - var alphaSocketManager = socketIoManager.of('/alpha'); + enableSockets: function(cookieParser, sessionStore, sessionKey, callback){ + var callback = callback || function(){}; + var socketIoManager = this.socketIoManager; + var sessionToUserMap = this.sessionToUserMap; + var socketsMap = this.socketsMap; + var alphaSocketManager = socketIoManager.of('/alpha'); + + socketIoManager.set('transports', [ + 'websocket', + 'flashsocket', + 'htmlfile', + 'xhr-polling', + 'jsonp-polling' + ]); + socketIoManager.set('match origin protocol', true); //NOTE: Only necessary for use with wss, WebSocket Secure protocol + socketIoManager.set('resource', '/socket-api'); //NOTE: forward slash is required here unlike client setting alphaSocketManager.manager.set('authorization', function(data, callback){ cookieParser(data, {}, function(error) { @@ -104,6 +114,9 @@ var SocketManager = Class.extend(Obj, { GlobalSocketRoutes.enableAll(null, socket); }); + + console.log("socketIoManager:", socketIoManager); + console.log("alphaSocketManager:", alphaSocketManager); }, addEstablishedUserListeners: function(socket){ @@ -112,30 +125,8 @@ var SocketManager = Class.extend(Obj, { }); -// createRoom: function(){ -// -// }, -// -// joinRoom:function(){ -// -// }, -// -// notifyRoom: function(roomId, eventObj){ -// var room = Rooms.get(roomId); -// var sessions = room.sessions; -// sessions.forEach(function(session){ -// var socket = SessionToSocketMap.get(session); -// socket.emit(eventObj.name, eventObj.data); -// }) -// }, -// -// notifyUser: function(userId, eventObj){ -// var user = Users.get(userId); -// -// }, - //------------------------------------------------------------------------------- // Exports //------------------------------------------------------------------------------- -bugpack.export('airbugserver.SocketManager', SocketManager); +bugpack.export('airbugserver.SocketIoManager', SocketIoManager);