人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

iOSおよびAndroidの標準ブラウザでも軽快に動く、リアルタイムなWebアプリ(チャットや、Googleドキュメントのような共同編集作業用のページ) を作るにはどうすればよいでしょうか?
WebSocketが使えればいいのですが、スマートフォンの標準ブラウザは対応していないそうですね。


●質問者: delighter
●カテゴリ:インターネット
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● pigmon88
●34ポイント

有料ですが、このサービスでできるようですね。

http://www.boomo.jp/


delighterさんのコメント
すみません、ちょっと限定的すぎて…

2 ● Kanasansoft
●33ポイント ベストアンサー

リアルタイムWebの環境は、随分と整ってきてはいますが、まだ過渡期のためどこかで割り切りが必要です。
ご質問の内容からでは、詳細がわかりかねるため、判断材料になりそうな事柄を列挙します。

= スマートフォンのWebSocket対応について =
iOSは、4.2.1以降でWebSocketに対応していますが、ドラフト版のhybi-00というバージョンになります。hybi-00では、テキストデータの送受信は可能ですが、バイナリデータには対応していないため、Base64化する等の工夫が必要です。また、死活監視に利用できるping/pong frameには対応していません。iOS6のSafariでは、RFC版のWebSocketが使えるようになっています。
Androidの4.0までの標準ブラウザは、ご質問にある通りWebSocketには対応していません。しかし、4.1以降はRFC版のWebSocketに対応したChromeが標準ブラウザになります。

= リアルタイムの定義と負荷について =
一概にリアルタイムと言っても、定義は人によりニュアンスが異なります。
33ms(=30fps)以下の場合もありますし、数百msや1秒前後のこともあります。
33ms以下は現時点のインターネットとスマートフォンのブラウザでは、不可能なのではないかというのが、私の個人的な理解です。
数百ms前後であれば、WebSocket一択かと思います。
1秒前後まで妥協できるのであれば、Cometも視野に入ってきます。
ただしCometは、WebSocketに比べて通信量が非常に多く、サーバ負荷も高いため、送受信するデータ量や送受信頻度には気をつけて下さい。

= フォールバックについて =
WebSocketに対応しているブラウザならWebSocketを、対応していないブラウザではCometを使う、このような処理をフォールバックと言います。
サーバの環境が限定されてしまいますが、node.jsというサーバ上で使えるsocket.ioなら、フォールバックが可能です。
node.jsを使う場合、サーバ側をJavaScriptで実装する必要がありますが、手軽にコーディングできるため、人気急上昇中です。
私は、JavaのJettyというサーバ兼ライブラリを好んで使っています。NIOに対応しており、高い負荷にもよく耐えてくれます。私はフォールバックを余り好んで使わないためそのまま使っていますが、Jetty上で使えるcometdという仕組みなら確かフォールバックに対応していたはずです(要確認)。
フォールバックされるとComet等になってしまうため、負荷には気をつけて下さい。
node.jsやJetty以外にも多くのサーバがWebSocketに対応してきているため、ご自身の環境に合わせて選択して下さい。


delighterさんのコメント
おおおありがとうございます!! まさに求めていた回答でした。 自分で調べると、なかなか纏まった情報が得られなくて。

3 ● 楽1978
●33ポイント

こういうのでしょうか?
http://d.hatena.ne.jp/akihito_s/20110417
http://news.livedoor.com/article/detail/6940864/


delighterさんのコメント
はい、こういうのです! 後者のurlが見れませんでしたが…
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ