« 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 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 11:14 AM

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

Posted by: みかげ | Sunday, June 03, 2007 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


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

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