2011-10-19 14 views
1

私はウェブ上でカスタムライブチャットプログラムを実装しようとしていますが、ユーザーのためにリアルタイム(またはリアルタイムに近い)アップデートをどのように処理するかはわかりません。新しいコメントのためにデータベースをポーリングする毎秒クライアント側からAjaxリクエストを送信する方が理にかなっていますか?ウェブでライブチャットを行う方法をポーリングしていますか?

コメントが追加されるたびにデータベースから何とかブロードキャストする方法はありますか?可能であれば、それはどのように機能しますか?私はAsp.net(C#)とSQL Server 2008を使用しています。

ありがとうございます!

+3

Yarrr matey!あなたが壊血病の犬が探しているのは、[long-polling](http://stackoverflow.com/questions/tagged/long-polling)です。 –

+0

@ChrisShouts:ああ、これはロングポーリングと呼ばれています。今日何かを学んだ。 –

+0

[ASP.NET用の彗星実装]の可能な複製?012(http://stackoverflow.com/questions/65673/comet-implementation-for-asp-net) – RedFilter

答えて

2

利用ロングポーリング/サーバー側のプッシュ/彗星:

http://en.wikipedia.org/wiki/Comet_(programming))

も参照してください: http://en.wikipedia.org/wiki/Push_technology

私はあなたが長いポーリングを使用するときにも、Webサーバーをしたいと思います要求ごとに非ブロッキングioの形式でいくつかのサポートを提供し、接続ごとにスレッドを保持しないようにします。

0

いいえ。 RabiitMqやActiveMQなどのキューイングシステムを使用します。 mongoDBもチェックしてください。

キューイングシステムは、公開購読機能を提供します。

+0

これは意味をなさない。 Webブラウザがリモートメッセージキューにメッセージを直接公開する方法もしあなたが望むなら、 –

+0

あなたはジャバスクリプトでもそれを行うことができます。 ActiveMQにはjavascriptライブラリがあります。 –

2

各クライアントにサーバーをポーリングさせ、サーバー側で応答せずに接続を開いたままにすることができます。

サーバー側でメッセージが検出されるとすぐに、このデータはすでに開いている接続から返されます。受領後、お客様のクライアントは直ちに新しいリクエストを発行します。

どのセッションがどのセッションに関連付けられているか、タイムアウトを防ぐために応答する必要があるサーバー側を追跡する必要があるため、いくつかの複雑さがあります。

これは決して実際には行ったことがありませんが、これは最もリソース効率のよい方法です。

関連する問題