Permalink
Browse files

サーバサイドのプログラムにコメントを追加

  • Loading branch information...
nsyee committed Nov 12, 2012
1 parent 9517818 commit 1aaf52be9fc47fbfa9a472a333e7f30846fc82cc
View
8 app.js
@@ -1,3 +1,11 @@
/******************************************************************
* syaberi-houseアプリケーションの起点となる起動スクリプト。
* 開発環境やCPUのコア数が1個の場合はapp.jsを実行する。
* ※複数のCPUのコアを活用する場合はapp.jsを直接使用せずcluster.jsを実行する。
*
* usage: $ node app.js
******************************************************************/
var fs = require('fs'); var fs = require('fs');
var path = require('path'); // dirname, basename とかのutil var path = require('path'); // dirname, basename とかのutil
var config = require('config'); // 設定ファイル var config = require('config'); // 設定ファイル
View
@@ -1,3 +1,10 @@
/******************************************************************
* syaberi-houseアプリケーションを複数プロセス立ち上げる起動スクリプト。
* 複数のCPUのコアを活用する場合はapp.jsを直接使用せずこちらを実行する。
*
* usage: $ node cluster.js
******************************************************************/
var cluster = require('cluster'); var cluster = require('cluster');
var config = require('config'); var config = require('config');
View

This file was deleted.

Oops, something went wrong.
View
@@ -1,7 +1,16 @@
/******************************************************************
* JavaScriptファイルを結合・圧縮するツール"Grunt"の設定ファイル。
* production環境では個別のファイルを読み込むのではなく、
* Gruntを使って結合・圧縮したファイルが読み込まれる。
* (common.min.js, top.min.jsなど)
*
* usage: $ ./node_modules/grunt/bin/grunt
******************************************************************/
module.exports = function(grunt) { module.exports = function(grunt) {
grunt.initConfig({ grunt.initConfig({
//jsファイルを画面ごとに結合 //jsファイルを結合する
concat: { concat: {
common: { common: {
src: [ src: [
@@ -83,6 +92,7 @@ module.exports = function(grunt) {
dest: 'public/js/dist/deleteChatroom.js' dest: 'public/js/dist/deleteChatroom.js'
} }
}, },
//jsファイルを縮小化する
min: { min: {
common: { common: {
src: 'public/js/dist/common.js', src: 'public/js/dist/common.js',
View
@@ -1,6 +1,10 @@
/*******************************
* アプリケーション内の定数定義
******************************/
var CONST = {}; var CONST = {};
//ハウスのステータス //部屋のステータス
CONST.STATUS_INVITE = 0; //申し込み受付中 CONST.STATUS_INVITE = 0; //申し込み受付中
CONST.STATUS_OPEN_AND_INVITE = 1; //申し込みうけつつチャット開始中 CONST.STATUS_OPEN_AND_INVITE = 1; //申し込みうけつつチャット開始中
CONST.STATUS_OPEN = 2; //募集終了してチャット中 CONST.STATUS_OPEN = 2; //募集終了してチャット中
@@ -9,8 +13,10 @@ CONST.STATUS_OPEN = 2; //募集終了してチャット中
CONST.STATUS_ENTRY = 0; //申込発言 CONST.STATUS_ENTRY = 0; //申込発言
CONST.STATUS_CHAT = 1; //チャット発言 CONST.STATUS_CHAT = 1; //チャット発言
//トップページのハウス表示件数 //トップページの部屋の表示件数
CONST.TOP_HOUSE_NUM = 10; CONST.TOP_HOUSE_NUM = 10;
//マイページの部屋の表示件数
CONST.MYPAGE_HOUSE_NUM = 5; CONST.MYPAGE_HOUSE_NUM = 5;
exports.CONST = CONST; exports.CONST = CONST;
View
@@ -1,7 +1,12 @@
/*********************************************************
* チャットに関連するリクエストを扱うコントローラー
*********************************************************/
var app = require('../../app'); var app = require('../../app');
var Chat = require('../models/chat').Chat; var Chat = require('../models/chat').Chat;
var check = require('validator').check; var check = require('validator').check;
//チャット新規作成処理
exports.create = function(req, res, next) { exports.create = function(req, res, next) {
var logger = app.set('logger'); var logger = app.set('logger');
var userId = req.user.id; var userId = req.user.id;
@@ -33,6 +38,8 @@ exports.create = function(req, res, next) {
}); });
}; };
//チャット削除処理
exports.destroy = function(req, res, next) { exports.destroy = function(req, res, next) {
var logger = app.set('logger'); var logger = app.set('logger');
var chatId = req.param('id'); var chatId = req.param('id');
@@ -1,3 +1,7 @@
/*********************************************************
* 部屋に関連するリクエストを扱うコントローラー
*********************************************************/
var app = require('../../app'); var app = require('../../app');
var config = require('config'); var config = require('config');
var Chat = require('../models/chat').Chat; var Chat = require('../models/chat').Chat;
@@ -10,6 +14,7 @@ var redis = require('socket.io/node_modules/redis');
var redisClient = redis.createClient(config.redis.port, config.redis.host); var redisClient = redis.createClient(config.redis.port, config.redis.host);
//部屋一覧を新着順に取得する処理 (Ajax API用)
exports.index = function(req, res, next) { exports.index = function(req, res, next) {
var logger = app.set('logger'); var logger = app.set('logger');
var profileId = req.query.profileId; var profileId = req.query.profileId;
@@ -33,7 +38,7 @@ exports.index = function(req, res, next) {
} }
var offset = (page - 1) * num; var offset = (page - 1) * num;
//作成したハウス一覧 //作成した部屋一覧を取得
if (mode === 'owner') { if (mode === 'owner') {
//validation //validation
try { try {
@@ -49,23 +54,23 @@ exports.index = function(req, res, next) {
limit: num + 1 limit: num + 1
}, _indexNext); }, _indexNext);
} }
//申請中のハウス一覧 //申請中の部屋一覧を取得(申請機能が無くなった為現在は未使用)
else if (mode === 'entry') { else if (mode === 'entry') {
Chatroom.findEntryRoom({ Chatroom.findEntryRoom({
userId: req.user.id, userId: req.user.id,
offset: offset, offset: offset,
limit: num + 1 limit: num + 1
}, _indexNext); }, _indexNext);
} }
//参加中のハウス一覧 //参加中の部屋一覧を取得
else if (mode === 'join') { else if (mode === 'join') {
Chatroom.findJoinRoom({ Chatroom.findJoinRoom({
userId: req.user.id, userId: req.user.id,
offset: offset, offset: offset,
limit: num + 1 limit: num + 1
}, _indexNext); }, _indexNext);
} }
//全チャットルーム一覧 //全部屋の一覧を取得
else { else {
Chatroom.findWithLatestChat({ Chatroom.findWithLatestChat({
offset: offset, offset: offset,
@@ -96,8 +101,7 @@ exports.index = function(req, res, next) {
}; };
//部屋の新規作成画面を表示
exports.new = function(req, res, next) { exports.new = function(req, res, next) {
var logger = app.set('logger'); var logger = app.set('logger');
Category.find(function(err, categories) { Category.find(function(err, categories) {
@@ -108,6 +112,7 @@ exports.new = function(req, res, next) {
}); });
}; };
//部屋の新規作成実行処理
exports.create = function(req, res, next) { exports.create = function(req, res, next) {
var logger = app.set('logger'); var logger = app.set('logger');
var categoryId = req.param('categoryId'); var categoryId = req.param('categoryId');
@@ -155,7 +160,7 @@ exports.create = function(req, res, next) {
}); });
}; };
//部屋詳細画面を表示
exports.show = function(req, res, next) { exports.show = function(req, res, next) {
var logger = app.set('logger'); var logger = app.set('logger');
var chatroomId = req.param('id'); var chatroomId = req.param('id');
@@ -255,6 +260,8 @@ exports.show = function(req, res, next) {
}; };
//部屋の削除確認画面を表示
exports.confirm_delete = function(req, res, next) { exports.confirm_delete = function(req, res, next) {
var logger = app.set('logger'); var logger = app.set('logger');
var chatroomId = req.param('id'); var chatroomId = req.param('id');
@@ -286,6 +293,7 @@ exports.confirm_delete = function(req, res, next) {
}; };
//部屋の削除実行処理
exports.delete = function(req, res, next) { exports.delete = function(req, res, next) {
var logger = app.set('logger'); var logger = app.set('logger');
var chatroomId = req.param('id'); var chatroomId = req.param('id');
@@ -332,7 +340,7 @@ exports.delete = function(req, res, next) {
}; };
//部屋への招待処理(申請機能が無くなった為現在は未使用)
exports.invite = function(req, res, next) { exports.invite = function(req, res, next) {
var logger = app.set('logger'); var logger = app.set('logger');
var chatroomId = req.params.id; var chatroomId = req.params.id;
View
@@ -1,3 +1,8 @@
/*********************************************************
* マイページに関連するリクエストを扱うコントローラー
*********************************************************/
var app = require('../../app'); var app = require('../../app');
var Chatroom = require('../models/chatroom').Chatroom; var Chatroom = require('../models/chatroom').Chatroom;
var User = require('../models/user').User; var User = require('../models/user').User;
@@ -6,6 +11,8 @@ var utils = require('../utils');
var Mail = require('../utils/mail').Mail; var Mail = require('../utils/mail').Mail;
var check = require('validator').check; var check = require('validator').check;
//マイページ画面を表示
exports.show = function(req, res, next) { exports.show = function(req, res, next) {
var logger = app.set('logger'); var logger = app.set('logger');
var profileId = req.param('id') || req.user.id; var profileId = req.param('id') || req.user.id;
@@ -35,16 +42,18 @@ exports.show = function(req, res, next) {
isMine: isMine isMine: isMine
}); });
}); });
}; };
//退会確認画面を表示
exports.confirmDeactivation = function(req, res, next) { exports.confirmDeactivation = function(req, res, next) {
var logger = app.set('logger'); var logger = app.set('logger');
res.render('deactivation', { res.render('deactivation', {
}); });
}; };
//退会実行処理
exports.deactivation = function(req, res, next) { exports.deactivation = function(req, res, next) {
var logger = app.set('logger'); var logger = app.set('logger');
var _csrf = req.session._csrf; var _csrf = req.session._csrf;
@@ -1,3 +1,9 @@
/*********************************************************
* Socket.ioを用いたリアルタイム処理のリクエスト/イベントを
* 扱うコントローラー
*********************************************************/
var app = require('../../app'); var app = require('../../app');
var config = require('config'); var config = require('config');
var Chatroom = require('../models/chatroom').Chatroom; var Chatroom = require('../models/chatroom').Chatroom;
@@ -9,12 +15,13 @@ var cookieLib = require('cookie'); // cookie 操作npmモジュール
var redis = require('socket.io/node_modules/redis'); var redis = require('socket.io/node_modules/redis');
var redisClient = redis.createClient(config.redis.port, config.redis.host); var redisClient = redis.createClient(config.redis.port, config.redis.host);
var ownerClients = {}; //ハウスオーナーのSocket.ioのセッションを保持 var ownerClients = {}; //部屋オーナーのSocket.ioのセッションを保持
//部屋に訪れた時に呼び出される処理
exports.onConnection = function(socket) { exports.onConnection = function(socket) {
var logger = app.set('logger'); var logger = app.set('logger');
var sessionStore = app.set('sessionStore'); var sessionStore = app.set('sessionStore'); //Redisのセッションストア
var chatroomId = socket.handshake.query.id; var chatroomId = socket.handshake.query.id;
var isUrlOpen = socket.handshake.query.urlopen; var isUrlOpen = socket.handshake.query.urlopen;
var user; var user;
@@ -30,7 +37,13 @@ exports.onConnection = function(socket) {
return; return;
} }
//部屋に接続してきたユーザーのセッションIDを部屋ごとに保持 //部屋に接続してきたユーザーのセッションIDを部屋ごとにRedisで管理
//部屋IDをキーにハッシュ型で保持する
//{
// "ユーザー1のセッションID": true,
// "ユーザー2のセッションID": true,
// "ユーザー3のセッションID": true
//}
//## Socket.ioのnamespaceの独自実装 //## Socket.ioのnamespaceの独自実装
redisClient.hset("chatroomClients:"+chatroomId, socket.id, "true"); redisClient.hset("chatroomClients:"+chatroomId, socket.id, "true");
@@ -62,6 +75,7 @@ exports.onConnection = function(socket) {
// // } // // }
// }); // });
//チャットメッセージを追加/削除した時に呼び出される処理
socket.on('message', function(data) { socket.on('message', function(data) {
logger.info('##socket.io: message'); logger.info('##socket.io: message');
@@ -115,6 +129,8 @@ exports.onConnection = function(socket) {
}); });
}; };
//参加申請コメントを書き込む処理(申請機能が無くなった為現在は未使用)
function createEntry(socket, data) { function createEntry(socket, data) {
var io = app.set('io'); var io = app.set('io');
@@ -137,8 +153,7 @@ function createEntry(socket, data) {
//オーナーの発言はブロードキャスト //オーナーの発言はブロードキャスト
if (user && (user.id === data.ownerId)) { if (user && (user.id === data.ownerId)) {
//socket.emit('message', data); //Redisで管理している、部屋に接続中のユーザーにメッセージ送信
//socket.broadcast.emit('message', data);
redisClient.hkeys("chatroomClients:"+data.chatroomId, function(err, clients) { redisClient.hkeys("chatroomClients:"+data.chatroomId, function(err, clients) {
clients.forEach(function(sid) { clients.forEach(function(sid) {
process.nextTick(function() { process.nextTick(function() {
@@ -159,6 +174,7 @@ function createEntry(socket, data) {
}); });
} }
//通常のチャットコメントを書き込む処理
function createChat(socket, data) { function createChat(socket, data) {
var io = app.set('io'); var io = app.set('io');
@@ -175,8 +191,7 @@ function createChat(socket, data) {
data.time = results[0].time; data.time = results[0].time;
data.message = utils.nl2br(utils.escHtml(data.message)); data.message = utils.nl2br(utils.escHtml(data.message));
//socket.emit('message', data); //Redisで管理している、部屋に接続中のユーザーにメッセージ送信
//socket.broadcast.emit('message', data);
redisClient.hkeys("chatroomClients:"+data.chatroomId, function(err, clients) { redisClient.hkeys("chatroomClients:"+data.chatroomId, function(err, clients) {
clients.forEach(function(sid) { clients.forEach(function(sid) {
process.nextTick(function() { process.nextTick(function() {
@@ -187,6 +202,7 @@ function createChat(socket, data) {
}); });
} }
//チャットコメントを削除する処理
function destroy(socket, data) { function destroy(socket, data) {
var io = app.set('io'); var io = app.set('io');
var chatId = data.chatId; var chatId = data.chatId;
@@ -209,8 +225,7 @@ function destroy(socket, data) {
if (err2) { logger.error(err2); return; } if (err2) { logger.error(err2); return; }
data.chatId = chatId; data.chatId = chatId;
//socket.emit('message', data); //Redisで管理している、部屋に接続中のユーザーにメッセージ送信
//socket.broadcast.emit('message', data);
redisClient.hkeys("chatroomClients:"+data.chatroomId, function(err, clients) { redisClient.hkeys("chatroomClients:"+data.chatroomId, function(err, clients) {
clients.forEach(function(sid) { clients.forEach(function(sid) {
process.nextTick(function() { process.nextTick(function() {
@@ -224,11 +239,13 @@ function destroy(socket, data) {
} }
//部屋から離れた時に呼び出される処理
exports.onDisconnect = function(socket) { exports.onDisconnect = function(socket) {
var logger = app.set('logger'); var logger = app.set('logger');
var chatroomId = socket.handshake.query.id; var chatroomId = socket.handshake.query.id;
logger.info('##socket.io: disconnect'); logger.info('##socket.io: disconnect');
//部屋から離れるユーザーのセッションIDを部屋から削除
redisClient.hdel("chatroomClients:"+chatroomId, socket.id); redisClient.hdel("chatroomClients:"+chatroomId, socket.id);
}; };
View
@@ -1,7 +1,14 @@
/*********************************************************
* トップページに関連するリクエストを扱うコントローラー
*********************************************************/
var app = require('../../app'); var app = require('../../app');
var Chatroom = require('../models/chatroom').Chatroom; var Chatroom = require('../models/chatroom').Chatroom;
var CONST = require('../const').CONST; var CONST = require('../const').CONST;
//トップページ画面を表示
exports.index = function(req, res, next) { exports.index = function(req, res, next) {
var logger = app.set('logger'); var logger = app.set('logger');
@@ -1,3 +1,9 @@
/*********************************************************
* ファイルアップロードに関連するリクエストを扱うコントローラー
* (実装途中のため現在は未使用)
*********************************************************/
var app = require('../../app'); var app = require('../../app');
var formidable = require('formidable'); var formidable = require('formidable');
var fs = require('fs'); var fs = require('fs');
Oops, something went wrong.

0 comments on commit 1aaf52b

Please sign in to comment.