-
ID:JWZeOa さんの質問

Webサイトで、データベースのデータに変更があったら、ブラウザをリロードしなくても、
リアルタイムで内容を更新するような仕組みは、どのような技術を勉強すれば作れますか?


  • 例えばTwitterのように、
    新しいツイートがあれば次々に表示するような仕組みです。

  • よろしくお願いします。

みんなの回答 5 件

ID:sg6Vsh さんの回答

よくわかんないけど、node.jsは?
ttp://mdlab.jp:3000/

ID:vaL7Xz

node.jsはJavaScriptの実行環境の一つであるというだけで、これを勉強すれば即座に質問の内容ができるようになるというものではありません。
質問の内容はnode.jsを使ってもできるし、他のものを使ってもできます。

ID:sg6Vsh

知ってるよっ!!!

ID:JWZeOa

ありがとうございます。一読してみます。

ID:W2HqpL さんの回答

twitterはリアルタイムじゃないけど、あんな風にリアルタイムっぽく見せることは別に高度な技術でもなんでもない。javascriptとその周辺がちゃんと分かっている奴は誰でも実装できる。ただしtwitterほどのユーザ数をさばけるかどうかはまた別の話。

ID:JWZeOa

〉javascriptとその周辺がちゃんと分かっている奴は誰でも実装できる。
そうなんですね。例えばajaxで毎秒データベースを確認するのかなーと想像するのですが、
これだとどう考えても効率が悪いと思うので、
スタンダードなやりかたがあれば教えて欲しいです。

ID:erlQRE さんの回答

react,angular,riotなど

ID:vaL7Xz

これらは(angularは少し違うが)クライアント側の部分に使うもので、こういうのは必要ではあるけれど、これだけ勉強しても質問の内容は実現可能にはならないので、ご注意ください。
DBを監視する(または、変更があったらユーザーに通知する)ような仕組みは別に実装する必要があります。

ID:JWZeOa

ありがとうございます。

ID:UZ.XhA さんの回答

素人でもコピペですぐ出来るsocket通信がhtml5のwebsocket+node.js
色々あるからサーバーサイド側は好きな物を選べばいい。サービスとして使うなら負荷対策とかセキュリティ対策とか色々必要になるからTCP/IPの基本的なところから学ぶべき。
ユーザー数が少ないならもっと手軽にajaxで定期的に読み込むとかでもいいかも。何にせよ、DBへの確認をリアルタイムでやるなんてのは結構手間だし、すぐ落ちるものにしかならない気がする。

ID:JWZeOa

ありがとうございます。
websocketいいですね!詳しく調べてみます。
アドバイスもいただき助かります。

ID:Zvdx1x

twitterこそwebsocketでプッシュしたほうが負荷高いんだが。
サービス特性的にajaxで定期的に読み込んだほうがコスト低い。

ID:x/ro5d

サーバー側からプッシュするのはCRONとかで定時に何かするときだけで、それ以外はajaxで定期的に読み込む方法がいいな。
あとMaxClientを変更できるクラウドサーバーが本番では必須。

ID:Zvdx1x

>MaxClientを変更できるクラウドサーバーが本番では必須。

ここにいる雑魚どもはこれすら理解できないんだろうなあ…
結局スケールするサービス作るならerlangみたいにプロセスコストが低かったり、並列処理が容易だったりするものを選ぶ必要があるんだが、雑魚どもに言っても意味ないか。そもそもプロセスとスレッドの違いすら理解してないだろうし。

ID:28Wtpa

そこら辺を理解出来る人はこのサイトじゃ超少数派だよ。
雑魚の知ったかぶりレスばかりの中にたまにまともなレス出来る人がいる感じ

ID:Zvdx1x さんの回答

twitterがプッシュ通信したらサーバー負荷で死ぬと思うけど。
アーキテクトの基礎的な部分から勉強or少し頭捻ったほうが良い。うわべだけ学習しても作るときに絶対失敗するパターン。

ID:K/0oki

出たよ。批判だけして具体的な内容なんもない奴

ID:x/ro5d

批判だけってのが多いよねこのサイト。

ID:Zvdx1x

アホなお前らに説明してやるよカス。
例えばフォロワー500万人のアカウントのユーザーが一回呟いたら最大500万回のプッシュが発生することになる。(実際にはアクティブ中のユーザー数のみ)
これだけならまだ許容できるかもしれないが、フォローしているユーザーごとにミュートにしているかどうか、リストを見ていたらリストに入っているかを逐一リクエスト飛ばして確認することを一つのツイートごとに行っていたら全く通信コストの削減にならない。
逆に500万人をフォローしているアカウントがあったら、500万人のつぶやきごとに上記のリクエストをその度に行うことになってこちらも破綻する。
そんなことするなら初めからajaxでタイムライン差分を取得して描画したほうが簡単だし通信コストも著しく削減できる。
そもそもLINEやFBメッセには50人とか150人といった定員があるからプッシュ通信が成り立つんだよ。
もしお前らエンジニアがwebsocketこそ正しいという思い込みで、のべ何年何ヶ月も工数かけて作ってたらと思うとゾッとするな。早く世の中のために引退しろや。

ID:x/ro5d

まずはカルシウムでも取って落ち着けw
それ、上に書いてることをただ例えにしただけで、何について答えてるのか自分でもわかってないんじゃないの?ストレスでおかしくなってそうだし、引退するかどうかは別として一度病院行くべき

ID:Zvdx1x

アドバイスサンキュー。
ああ、ストレスやばいよ。でもカルシウムとストレスの科学的根拠はないから他の方法探すわ。

最終更新日:2016-01-10 (18,425 views)

関連するトピックス

ページ上部に戻る