« ErlangからPerl正規表現 | Main | Erlangで数字→ローマ数字変換 »

Thursday, May 31, 2007

OperaはComet+JSONP出来ない

IEとCometの相性が悪いで書いた問題を回避するため,複数ドメインを使うことにした.
まぁ,この問題の他にも,同一ドメインには同時2本しか接続がはれないので,そのドメインで同時に1つしか閲覧されないという前提が無い限りは,複数ドメインにしておいた方が良いと言うこともあった.

複数ドメインに分けると,クロスドメインの制約があるためにAjaxが使えなくなる.
そこで,JSONPを使うわけだけども,ここでまた問題が...

OperaでJSONP+Cometすると,Cometの応答が返ってくるまで,すべてのJavaScriptが止まってしまう.
どうやら,scriptタグでスクリプトを読み込んでいる間は,JavaScriptの実行が止まってしまう模様.
仕方なく,Operaの場合はAjaxを使うようにして回避...

また,scriptタグを付け足す方式なので,エラーチェックが出来ないのも難点.
Ajaxではサーバとの接続が切れれば,すぐにエラーが返ってくるのに,
scriptタグの場合はタイムアウトを待つしかない.
この辺も不便.

うーん,結局AjaxでCometするにしても,JSONP+Cometするにしても色々めんどくさい.

チャットとかやりたい場合は,Flash+XMLSocketを使って通信して,
Flash / JavaScript Integration kitとか使ってJavaScript側に制御を渡すのが楽そう?

詳しくは見ていないけど,チャベリというサイトが
Flash+XMLSocket+JavaScriptでやっているぽい.


|

« ErlangからPerl正規表現 | Main | Erlangで数字→ローマ数字変換 »

Comments

document.domainに共通の上位ドメインを設定することで、クロスドメインの制限は回避できませんか?
http://www.mozilla.org/projects/security/components/same-origin.html

Posted by: rui | Friday, June 01, 2007 at 10:37 AM

document.domain と XHR を組み合わせる技については、以下の URL が先駆的な試みだと思いますが、Opera だと上手くいかないと書いてありますね。最近だとできるのかな...
http://fettig.net/weblog/2005/11/30/xmlhttprequest-subdomain-update/

Posted by: kazuho | Friday, June 01, 2007 at 11:14 AM

ruiさん,kazuhoさん,コメントありがとうございます.
リンク先を確認してみましたが,なかなかブラウザ依存が多くて難しそうですね.
やはりFLASHが正解に思えてきました.(^^;

Posted by: みかげ | Sunday, June 03, 2007 at 01:43 PM

Post a comment



(Not displayed with comment.)


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



TrackBack

TrackBack URL for this entry:
http://app.cocolog-nifty.com/t/trackback/33589/15270648

Listed below are links to weblogs that reference OperaはComet+JSONP出来ない:

« ErlangからPerl正規表現 | Main | Erlangで数字→ローマ数字変換 »