« Erlangのデータ保存方法の速度比較 | Main | oregexp動いた »

Wednesday, May 16, 2007

IEとCometの相性が悪い

IEでチャットにログインして,リロードしたりすると,反応が無くなる,という問題があるようで,調べてみた.

Firefoxの場合,Ajaxでサーバに接続中にリロードすると,その接続は切断される.
リロードした以上,そのページで発行したAjaxリクエストは処理を続行する必要がないと思うので,切断するのが普通なのではないかと思うのだけども,IEはそうではない模様.

IEの場合,リロードしても接続したコネクションが張りっぱなしになってしまう.
1ホストに対して同時2コネクションの制限はその状態でも有効なため,追加のAjaxリクエストが待たされて,投稿が出来なかったり,応答が無かったりするということのよう.

今のチャットだと,入室後に新規発言を待っている時は,Cometコネクションが1本.
そこでリロードすると,ページを表示し直すため,もう1回Cometコネクションが追加で張られる.
入室ボタンを押すと,別のAjaxリクエストで入室フォームをpostするのだけど,既に2本接続を張っているので,そのpostが遅延されてしまう.
うーん・・・

Lingrはどうやってるのかなーと思って調べてみたら,リロードするたびにComet先のホスト名が変わるようになっていた.
こういう回避策しかないのかな?
DNS周りもいじらないといけないから結構めんどくさそうだ.JSONPに変えたりもしないとだめそうだし...
色々罠が多い.(^^;

というわけでこの問題を直すのには少々時間がかかりそう.

|

« Erlangのデータ保存方法の速度比較 | Main | oregexp動いた »

Comments

Post a comment



(Not displayed with comment.)


Comments are moderated, and will not appear on this weblog until the author has approved them.



TrackBack


Listed below are links to weblogs that reference IEとCometの相性が悪い:

« Erlangのデータ保存方法の速度比較 | Main | oregexp動いた »