2008年01月16日
IE問題の解決策
IEでCometを実装すると問題が発生する件は、回避策がいくつかありそうだ。
1,チャットルームへ入るたびに新規のサブドメインを割り当てる。
2,JSONPを使う。
世の中的には2のJSONPを使うやり方が一般的のようだ。
JSONPはXMLHttpRequestに存在する他ドメインへのアクセス制限を回避することができる。
が、JSONPはXMLHttpRequestと違いタイムアウトなどエラー時のハンドリングができない。Operaで動作に問題があるなどするようだ。Operaでの回避策は一応あってOperaでも非同期リクエストが並列処理できる img-JSONPを参照。
ふーむ、1のやり方で回避できそうな気もするけど・・・。
Lingrは発言などの投稿はwww.lingr.comへ。新規ログの取得はランダムサブドメインを読むようにしていた。別ドメインにアクセスしに行っているからJSONPだろうか。JavaScriptのソースは読んでないので推測だが。
JSONPを導入するとopera対応も必要だし、とりあえず部屋に入るときにランダムサブドメインを生成するページを経由し、その後そのドメインを使用した部屋にリダイレクトするようにするか。
その後、何か落とし穴があるようだったら素直にJSONPに移行しよう。
というわけで、リダイレクトを使って動的にサブドメインを作るやり方でIE問題を回避した!
これによりIEで部屋の出入りをしてもセッション数制限で不具合はでなくなった。
が、F5でリロードしてしまうとセッション数が足りなくなってやはり問題が・・・。
F5禁止にするかJSONPにするか・・・。
やっぱJSONPが無難かな・・・。
Trackback on "IE問題の解決策"
このエントリーのトラックバックURL:
"IE問題の解決策"へのトラックバックはまだありません。
"IE問題の解決策"へのコメントはまだありません。