Permalink
Browse files

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

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

This file was deleted.

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

0 comments on commit 1aaf52b

Please sign in to comment.