2016-07-18 1 views
-1

JavaScriptのリアルタイムアプリケーションを作成するタスクがあります。サーバー側は準備が整っています(wss://)。クライアント側を作成する必要があります。あなたの接続を確認するためにサーバーにpingを実行できるデータとのJavaScriptリクエストの接続

クライアント:

主なタスクは、私はとの問題を抱えています。クライアントは、シーケンス番号(正確なping時間をトレースすることができます)を含むpingを実行します。

{ 
    "$type": "pong", 
    "seq": 1 
} 

クライアント要求

{ 
    "$type": "subscribe_tables" 
} 

Serverはテーブルのリストで応答します、とtable_addedとクライアントを更新し、table_removedとメッセージをtable_updated:

{ 
    "$type": "ping", 
    "seq": 1 
} 

サーバが応答します状況が変わったときはいつでも

{ 
    "$type": "table_list", 
    "tables": [ 
    { 
     "id": 1, 
     "name": "table 1", 
     "description" : "one, two" 
    }, { 
     "id": 2, 
     "name": "table 2" 
     "description" : "two, three" 
    } 
    ] 
} 

table_updatedイベント

{ 
    "$type": "update_table", 
    "table": { 
    "id": 3, 
    "name": "table - Foo Fighters", 
    "participants": 4 
    } 
} 

質問:私は知っている、私はnew EventSource()を使用することができ、これは正しいのですか?たとえば、データを$typeなどに送信するにはどうすればよいですか?

+0

クライアントが接続してデータを取得する方法がまだわからない場合は、「サーバーは準備ができています」と言うのは奇妙なことです。 httpリクエスト、webSocket、またはサーバー側のイベントなど、クライアントからデータを取得する方法はどうですか? – jfriend00

+0

私はwss:// – MurDaD

+0

経由でサーバに接続できます。webSocketがあなたの計画であれば、どうして 'new EventSource()'を使うのですか?今、あなたの全体の質問は本当に意味をなさない。実際に助けを求めているものはわかりません。 webSocketで接続している場合は、webSocket経由でサーバーからデータを送信し、そのデータをクライアントのwebSocketから読み取るだけです。 – jfriend00

答えて

0

私は新しいEventSource()を使用できますが、これは正しいですか? データ$ typeを送信するにはどうすればよいですか?

いいえ、正しくありません。サーバーがwebSocket接続を予期している場合は、クライアントからnew WebSocket(...)を使用して、クライアントからサーバーへの接続を確立します。そして、EventSource()オブジェクトはwebSocketからの全く異なるトランスポートであるサーバー側イベントに使用されます。

webSocketを使用するプログラミング例here on MDNが表示されます。あなたがデータとしてJavascriptのオブジェクトを送信しようとしている場合

また、あなたは一般的に文字列にそれらをシリアル化するためにJSON.stringify()を使用し、そのを送信して、受信側では、背面にJSON文字列を解析するためにJSON.parse()を使用することになりますJavascriptオブジェクトです。これは、同じメッセージ内の他のデータとともに、$typeのような情報を送信する方法です。 FYI

socket.ioは、それはあなたの自動的に通常、JSONのシリアライズ、自動再接続、キープアライブ自動接続とプログラミングのWebSocketで必要とされるためにたくさんのことを行いますので、非常に人気となっているのWebSocketの上に構築されたライブラリですドロップ検出など...あなたは確かにクライアントとサーバーでそれを使用する必要はありませんが、それはしばしば多くの時間を節約します。

関連する問題