2009-07-14 8 views
2

私はErlangとPHPでCometチャットをやっています。しかし、今私は問題に会ったと思う:ポーリング接続が切断され、特定の時間(私はこれを10秒に設定)で自動的に再接続するので、ユーザーがチャットサーバーに接続していない時間があります。ユーザーがその時点でメッセージを送信すると、メッセージは死んでしまいます(誰もそれを受け取ることができません)。Cometチャットのデッドメッセージを避けるには?

クライアントコードでは、jsoneryとjsoneryを使用してポーリング接続を実現しています。この問題を解決する良い方法はありますか?事前に

感謝〜

答えて

0

メッセージが送信されると、ちょうどjqueryの直後に再接続して、それがそうするとき、メッセージを送信します。

1

2つの同時接続が許可されています。それらをインターリーブして、一方が他方のリスニング中に接続している(そしてユーザーのメッセージをサーバーにプッシュする)ようにします。

1

クライアントが接続されていない間にすべてのメッセージを保存するサーバー上でセッションプロセスを実行します。クライアントが何らかの(設定可能な)時間接続しなかった場合、セッションは終了する可能性があります。クライアントが接続すると、セッションはキューに入れられたすべてのメッセージを接続に送信できます。

+0

メールボックスのような良いアイデアかもしれません。しかし、すべての接続用にメールボックスを構築すると、コストを気にする必要があります。助言がありますか? –

+0

メッセージがバイナリ/アトムの場合、ポインタを格納するだけです。タイムアウトが合理的であれば、それほどビルドする時間はありません。 – puzza007

関連する問題