回答編集履歴
5
微修正
answer
CHANGED
@@ -8,7 +8,7 @@
|
|
8
8
|
0. 各フレンドの最終リクエスト時間がn秒以内ならオンラインとする(nは適当に調整)
|
9
9
|
|
10
10
|
厳密にオンラインか判断することはできませんが手軽に実装できます。
|
11
|
-
これらの情報はファイルやMySQLなどのRDBに保存しても良いのですが、ユーザー数が増えてくると苦しくなってきますのでMemcachedやRedisなどメモリ上で読み書きできるミドルウェアを併用されるのがよろしいかと思います。
|
11
|
+
これらの情報はファイルやMySQLなどのRDBに保存しても良いのですが、ユーザー数が増えてくると苦しくなってきますのでMemcachedやRedisなどメモリ上で読み書きできるミドルウェアを併用されるのがよろしいかと思います。(フレンド数の上限が多いと通信量がそれなりに増えますのでご留意ください)
|
12
12
|
|
13
13
|
リアルタイム性が必須ということですとロングポーリングを利用する方法があげられます。簡単に言うとブラウザとサーバの間をずっと繋ぎっぱなしにする技術で、ブラウザから接続されたらサーバ上のデータにフラグを立て、切断されたらフラグを下ろすような作りになります。フレンドのフラグの状態に変化があった場合に接続中のユーザーに最新の情報を通知します。ユーザーが繋ぎっぱなしになりますので、開発されているサービスの同時接続数が非常に多い場合はそのままコストに跳ね返って来やすいので注意が必要です。
|
14
14
|
|
4
微修正
answer
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
ブログをご覧いただきありがとうございます。
|
2
|
-
URLにあるサンプルのようにFirebaseを利用するとJavaScriptだけで完結するので楽ちんなのですが、独自で実装されたいということでしょうか?(Firebaseは個人利用の範囲であればほぼ無料で利用できます)
|
2
|
+
URLにあるサンプルのようにFirebaseを利用するとブラウザ側のJavaScriptだけで完結するので楽ちんなのですが、独自で実装されたいということでしょうか?(Firebaseは個人利用の範囲であればほぼ無料で利用できます)
|
3
3
|
|
4
4
|
ぱっと思いつくアイデアとしては例えば擬似的にオンラインか判断する以下のような方法でしょうか。
|
5
5
|
|
3
追記
answer
CHANGED
@@ -10,7 +10,7 @@
|
|
10
10
|
厳密にオンラインか判断することはできませんが手軽に実装できます。
|
11
11
|
これらの情報はファイルやMySQLなどのRDBに保存しても良いのですが、ユーザー数が増えてくると苦しくなってきますのでMemcachedやRedisなどメモリ上で読み書きできるミドルウェアを併用されるのがよろしいかと思います。
|
12
12
|
|
13
|
-
リアルタイム性が必須ということですとロングポーリングを利用する方法があげられます。簡単に言うとブラウザとサーバの間をずっと繋ぎっぱなしにする技術で、ブラウザから接続されたらサーバ上のデータにフラグを立て、切断されたらフラグを下ろすような作りになります。た
|
13
|
+
リアルタイム性が必須ということですとロングポーリングを利用する方法があげられます。簡単に言うとブラウザとサーバの間をずっと繋ぎっぱなしにする技術で、ブラウザから接続されたらサーバ上のデータにフラグを立て、切断されたらフラグを下ろすような作りになります。フレンドのフラグの状態に変化があった場合に接続中のユーザーに最新の情報を通知します。ユーザーが繋ぎっぱなしになりますので、開発されているサービスの同時接続数が非常に多い場合はそのままコストに跳ね返って来やすいので注意が必要です。
|
14
14
|
|
15
15
|
本格的にリアルタイム性が必要ということですと、オンライン状態を管理するサーバを立ち上げることになりますが、Node.jsのSocket.ioなどを利用されるとコーディング自体は簡単にできますよ。
|
16
16
|
|
2
微修正
answer
CHANGED
@@ -1,15 +1,16 @@
|
|
1
1
|
ブログをご覧いただきありがとうございます。
|
2
2
|
URLにあるサンプルのようにFirebaseを利用するとJavaScriptだけで完結するので楽ちんなのですが、独自で実装されたいということでしょうか?(Firebaseは個人利用の範囲であればほぼ無料で利用できます)
|
3
3
|
|
4
|
-
ぱっと思いつくアイデアとしては例えば以下のような
|
4
|
+
ぱっと思いつくアイデアとしては例えば擬似的にオンラインか判断する以下のような方法でしょうか。
|
5
5
|
|
6
6
|
0. 30秒毎など定期的にサーバへリクエストする
|
7
7
|
0. レスポンスとしてフレンドの最終リクエスト時間を取得する
|
8
8
|
0. 各フレンドの最終リクエスト時間がn秒以内ならオンラインとする(nは適当に調整)
|
9
9
|
|
10
|
+
厳密にオンラインか判断することはできませんが手軽に実装できます。
|
10
11
|
これらの情報はファイルやMySQLなどのRDBに保存しても良いのですが、ユーザー数が増えてくると苦しくなってきますのでMemcachedやRedisなどメモリ上で読み書きできるミドルウェアを併用されるのがよろしいかと思います。
|
11
12
|
|
12
|
-
|
13
|
+
リアルタイム性が必須ということですとロングポーリングを利用する方法があげられます。簡単に言うとブラウザとサーバの間をずっと繋ぎっぱなしにする技術で、ブラウザから接続されたらサーバ上のデータにフラグを立て、切断されたらフラグを下ろすような作りになります。ただしこちらは開発されているサービスの同時接続数が非常に多い場合はそのままコストに跳ね返って来やすいので注意が必要です。
|
13
14
|
|
14
15
|
本格的にリアルタイム性が必要ということですと、オンライン状態を管理するサーバを立ち上げることになりますが、Node.jsのSocket.ioなどを利用されるとコーディング自体は簡単にできますよ。
|
15
16
|
|
1
追記
answer
CHANGED
@@ -9,6 +9,7 @@
|
|
9
9
|
|
10
10
|
これらの情報はファイルやMySQLなどのRDBに保存しても良いのですが、ユーザー数が増えてくると苦しくなってきますのでMemcachedやRedisなどメモリ上で読み書きできるミドルウェアを併用されるのがよろしいかと思います。
|
11
11
|
|
12
|
+
またはロングポーリングを利用する方法もありますが、開発されているサービスの同時接続数が非常に多い場合はそのままコストに跳ね返ってきます。簡単に言うとブラウザとサーバの間をずっと繋ぎっぱなしにする技術で、ブラウザから接続されたらサーバ上のデータにフラグを立て、切断されたらフラグを下ろすような作りになります。
|
12
13
|
|
13
14
|
本格的にリアルタイム性が必要ということですと、オンライン状態を管理するサーバを立ち上げることになりますが、Node.jsのSocket.ioなどを利用されるとコーディング自体は簡単にできますよ。
|
14
15
|
|