ラベル javascript の投稿を表示しています。 すべての投稿を表示
ラベル javascript の投稿を表示しています。 すべての投稿を表示

2013/04/18

websocket javascript オンラインゲーム

node.js

【1】node.jsでの仮想通信

  • 【期待】node.jsで複数のサーバを同時に起動し、仮想的にクライアントサーバ環境を作る。

    1. クライアントサーバ環境での通信のテスト環境を作る。
    2. これまでのサーバ間でのやり取りを実際に行うまで結果が出ることが無い非効率な状況を改善できる。
    3. 擬似環境で何度もテストすることで、オペレーションミスの減少、バグの早期発見につながる。
    4. また、1テストの消化時間が早くなれば、多くのテストを実施できるようになり、システムの品質向上につながる。
  • これまでの経緯

    同じ環境を作るには、apache, tomcat, weblogicのようなサーバアプリをインストールする。

    • 複数サーバを立てるにしてもポート解放などが面倒である。
    • コンパイルされていて内部がなかなか見れることはない。
    • 複数サーバを立てることでマシンに高負荷がかかり、他の作業ができなくなる。
    • 結局は実サーバ(別PC)を使うことになる。

【2】node.jsでのwebsoket

従来のチャットアプリケーションを構築する場合 1. Aが投稿(messageをDBに保存) 2. Bが閲覧(messageDBを検索)

※この時Bがリロードせずに最新メッセージを取得するには、定期的(10秒間隔等)にDBを検索し、最新messageが投稿されていないかを確認する。(ポーリング)  

※ポーリングには送信側が送信データを持っていても受信側から問い合わせがあるまで待機となるため、タイムラグが発生する。
  • ロングポーリング
  • XMLHttpRequest

新しいチャットアプリケーション

  1. Aが投稿(messageを複数に送信し、履歴用にDBに登録)
  2. Bが閲覧(messageを受信)

    ※この時BはDBの応答を待たずにmessageを受信することになり、高速である。
    ※違いはポーリングでやってることを、コネクション貼りっぱなしにしてメッセージを投稿されたタイミングで全てのコネクションにメッセージ送信できる点です。
    

従来:コネクション接続→メッセージ取得→コネクション切断を繰り返し 現在:コネクション接続→メッセージ取得→待機 を繰り返し

node.jsの凄いところ - サーバからクライアントに対してプッシュができる。 - 専用のプロトコルでコネクションを維持し続けれる。

2013/04/17

websocket javascript


websocketとは、リアルタイム性のあるサービスを構築するために必要な技術の一つです。
通常のHTTP通信であればクライアントからのリクエストなしにサーバは応答しませんが、websocketを使うことで
クライアントとサーバ間で双方向の通信が可能となります。
Websocketを利用するにはNode.jsでWebSocketファンクションを利用することで簡単に実装でき、リアルタイム
アプリケーションが構築できます。また、phpによる実装でもWebSocketを利用できるようになったようです。

websocketはもともとHTML5の一機能として仕様の作成が進められていましたが、現在は切り離されて単独での
規格化が進められています。websocketもHTML5同様、ブラウザに依存していて、現在は利用できるブラウザが限られて
いるようです。

WEBアプリケーションはサーバへの負荷との戦いだと言えますが、その負荷の大部分はユーザのアクセス負荷だと
言えます。アクセス負荷を下げた上に、サービス機能を損なわないために必要なのはクライアントサイドのPCにも
処理負荷を分散させようという考え方だと思います。javascriptを多用した場合、負荷がクライアントPCに依存
しすぎて表示が遅くなったりしますが、サーバマシンの負荷が減り、処理は高速になります。この辺りはバランスだと
思いますが、サーバを増やす以外の負荷分散のアプローチとしては一考の価値があると思います。

自動でWEBブラウザテストを実行してみる!(selenium + eclipse + java)

1.eclipseの準備 2.selenium IDE(katalon recoder by firefox)で動作記録する。 3.javaファイルにエクスポートする。 4.eclipseで実行