OSDN Git Service

接続時に無駄な情報を送らないようにした
authorkonekoneko <jbh03215@gmail.com>
Wed, 19 Sep 2012 18:34:45 +0000 (03:34 +0900)
committerkonekoneko <jbh03215@gmail.com>
Wed, 19 Sep 2012 18:34:45 +0000 (03:34 +0900)
chatServer.js
public/chat.ejs
public/scripts/chatclient.js

index 7dc119b..a219e2d 100644 (file)
@@ -9,9 +9,6 @@ $not_match_password = "パスワードが一致しませんでした";  //パス
 $password_setted_message = "パスワードを設定しました";     //パスワードが設定されたときに表示されるメッセージ\r
 $password_resetted_message = "パスワードをリセットしました";     //パスワードが再設定されたときに表示されるメッセージ\r
 $failed_set_password_message = "パスワードの設定に失敗しました";        //パスワードが再設定されたときに表示されるメッセージ\r
-$free_password1 = "最初に入室する人が自由にパスワードを設定できます";  //自由パスワードメッセージ1\r
-$free_password2 = "この部屋は使用されています。パスワードを入力してください";      //自由パスワードメッセージ2\r
-$fixed_password = "この部屋にはパスワードが設定されています";      //固定パスワードルーム\r
 $ip_ban_list_file_name = "ipbanlist.txt";      //アクセスを禁止するIPが記録されているファイル\r
 $port = process.env.port || 3000;      //ポート\r
 $username = "admin";   //管理者用のページにアクセスできるユーザ名\r
@@ -98,14 +95,7 @@ app.get("/chat", function(req, res){
        var room_number = 0;\r
        if(typeof(req.query.rno) != "undefined")\r
                room_number = req.query.rno;\r
-       var msg = "";\r
-       if($rooms.IsFixedPassword(room_number))\r
-               msg = $fixed_password;\r
-       else if($rooms.IsContains(room_number))\r
-               msg = $free_password2;\r
-       if($rooms.IsFirstAuth(room_number))\r
-               msg = $free_password1;\r
-       res.render("chat",{rno:room_number,token:auth_string,message:msg});\r
+       res.render("chat",{rno:room_number,token:auth_string});\r
 });\r
 \r
 app.all("/log/" + $logfile_pattern,express.basicAuth(function (user, pass) {\r
@@ -214,7 +204,18 @@ for(var i = 0; i < $max_room_number; i++)
        .authorization(ParseAuthorization)\r
        .on("connection", function (socket) {\r
                console.log("connected from %s",GetClientIPAdress(socket));\r
-               socket.json.emit("send roomlist",$rooms.GetKeys());\r
+\r
+               var rno = GetRoomNumberFromName(socket.namespace.name);\r
+               var roomconfig = {};\r
+               if($rooms.IsFixedPassword(rno))\r
+                       roomconfig.type = 2;\r
+               else if($rooms.IsContains(rno))\r
+                       roomconfig.type = 1;\r
+               else\r
+                       roomconfig.type = 0;\r
+               roomconfig.IsOwned = !$rooms.IsFirstAuth(rno);\r
+               socket.json.emit("send roominfo",roomconfig);\r
+\r
                socket.on("get pastLogList", function (msg) {\r
                        ParseGetPastLogList(socket,msg);\r
                });\r
index c434ec7..7846fc5 100644 (file)
                        </p>\r
                </form>\r
                <div id="enter_message">\r
-                       <p><%= message %></input>\r
                </div>\r
        </div>\r
        <div id="namelist">\r
index dad764c..ab3a79e 100644 (file)
@@ -11,12 +11,15 @@ $critical_message = "[color=red]%s クリティカル![/color]";
 $send_message = "%sからの送信 %s";\r
 $failed_connect_message = "接続に失敗しました";\r
 $invaild_name_message = "名前を空欄にすることはできません";\r
+$free_password1 = "最初に入室する人が自由にパスワードを設定できます";  //自由パスワードメッセージ1\r
+$free_password2 = "この部屋は使用されています。パスワードを入力してください";      //自由パスワードメッセージ2\r
+$fixed_password = "この部屋にはパスワードが設定されています";      //固定パスワードルーム\r
 \r
 //ここから先は変更しないでください\r
 $prefix_filelist = "!";\r
 $socket = new Object();\r
 $names = {};\r
-$free_password_rooms = {};\r
+$roominfo = {};\r
 $dateFormat = new DateFormat("yyyy/MM/dd HH:mm:ss");\r
 //ここまで\r
 \r
@@ -52,7 +55,7 @@ $(document).ready(function(){
 \r
        $socket = io.connect(location.hostname  + "/" + document.chat_form.rno.value + "?token="+ encodeURIComponent(document.chat_form.token.value));\r
        $socket.on("error",getErrorMessage);\r
-       $socket.on("send roomlist",sendRoomListListerner);\r
+       $socket.on("send roominfo",sendRoomInfoListerner);\r
        $socket.on("connect",function(){\r
                $socket.on("req pastlog",pastLogEventListerner);\r
                $socket.on("req msg",getMessageEventListerner);\r
@@ -60,13 +63,22 @@ $(document).ready(function(){
        });\r
 });\r
 \r
-function sendRoomListListerner(rooms)\r
+function sendRoomInfoListerner(info)\r
 {\r
-       $free_password_rooms = rooms;\r
-       if(!(document.chat_form.rno.value in $free_password_rooms))\r
+       $roominfo = info;\r
+       if(info.type == 0)\r
        {\r
                $socket.json.emit("get pastLogList",{rno:document.chat_form.rno.value});\r
                getCurretLog();\r
+       }else if(info.type == 1){\r
+               if(info.IsOwned)\r
+               {\r
+                       $("#enter_message").append($free_password2);\r
+               }else{\r
+                       $("#enter_message").append($free_password1);\r
+               }\r
+       }else if(info.type == 2){\r
+               $("#enter_message").append($fixed_password);\r
        }\r
 }\r
 \r
@@ -211,7 +223,7 @@ function enterEventListener()
                return;\r
        }\r
 \r
-       if(document.chat_form.rno.value in $free_password_rooms)        //サーバー側からログが送られるので一旦クリアーする\r
+       if($roominfo.type != 0) //サーバー側からログが送られるので一旦クリアーする\r
        {\r
                $("#message").empty();\r
                $("#namelist").empty();\r