websocketの実装の結果、プロジェクトはクライアントのセッション全体を通してブラウザのページの表示をその裁量でリアルタイムに変更し、フィードバックを得ることができました。
技術チェーン全体の構築中に、ウェブソケット自体またはフラッシュ経由のエミュレーションのいずれかをサポートしていないブラウザの問題を簡単に乗り越えました。
しかし、フィールドトライアルに関しては、ISPに多くの問題があり、顧客を犠牲にしてトラフィックを節約しようとする、考えられない考えられないあらゆる方法がありました。 これらと猫の下でのWebSocketの本格的な戦闘展開のその他の「レイク」について読んでください。
たとえば、当社のモスクワオフィスでは、ISPプロキシサーバー(モスクワで最大)がwebsocketハンドシェイクヘッダーを切り取ります。 したがって、私たちの努力の80%は、これらの問題を平和的に解決することに費やされました。
しかし、良いニュースがあります。構築された一連の技術は現在、ベータテストモードになっています。 技術チェーンのすべてのリンクが抜け落ちないように制御することを学びます-これは管理の問題であり、その上でナットをますますきつく締めます。 橋は尖っており、弦に引き込まれ、最初の訪問者を待っています。
ここに、実装段階での問題解決の簡単な記録があります。
- Mojoliciousは、Mojo ::サーバー::デーモン:負荷が高いと不安定な動作(フリーズ、メモリリーク、接続の切断)を使用して運用環境で動作できません。 しかし、Mojo :: Server :: Hypnotoadの使用感は最高です。
- iPhone(iPad、iPod)のSafaryでは、MojoliciousがサポートしなくなったWebSocket76を使用しています。 ソリューションは、MojoX :: Transaction :: WebSocket76モジュールで、これは私たちが書いたものです。
- クライアントトラフィックを使用したISPのトリックは、xock-streaming、xdr-streaming、iframe-eventsource、iframe-htmlfile、xhr-polling、xdr-polling、iframe-xhr-polling、jsonp-ポーリング。
- Mojoliciousを使用したSockJSは、ドップされたSockJS-Tornadoを介して接続されます。 私は、Python WebSocketモジュールの使用を終了する必要がありました。彼は、外部チャネルだけでなく、内部チャネルでも非同期作業を行いました。
- 特に「最愛の」ISPの場合、websocketトランスポートはポート80で動作します(他のすべてのポートはISPのブロックから保護されていないため)。 クライアントサイトに割り当てられたip-shnikiおよびサブドメイン。
- セッションデータはMemCacheに保存されます。
- 通信トランスポートは、JSON RPC 2.0 + HTML :: FormHandler + DBIx :: Classを選択しました。 サーバーへの要求はすべて本格的なフォームであり、その答えはエラーの可能性があります。 彼らの多言語はgettextによって実装されています。
- 別個の「レーキ」としては(重要ではありませんが)、punycodeを使用してjsレベルのロシア語圏ドメインで処理する必要があることに言及する価値があります。
- クライアントブラウザーにpingを実行します。 pingがあり、それに応じてピンポンを受け入れます。
結果のスキームは、すべてのユーザーに100%のカバレッジを提供します。 setup.ruで構築されたサイトでの実装の利点を確認できます。ベータモードのwebsocketは、フィードバックフォーム(「耳」「質問」)とオンラインストアバスケットに使用されます。
関連リンク:
- ウェブソケットに関するウィキペディア
- プロジェクトmojolicious
- プロジェクトSockJS
- PerlモジュールMojoX ::トランザクション:: WebSocket76
- PerlモジュールMojo ::サーバー:: Hypnotoad
- PythonモジュールSockJS-Tornado
- PythonモジュールWebSocket
- サイトビルダーSetup.ru