2016-03-19 6 views
1

私はモバイルアプリケーションプロジェクトのリアルタイム通信にwebsocketを使用しています。クライアントは、それがすぐに-The認証情報にWebsocketベースのアプリ、セキュリティ、リアルタイムの優れた実践ですか?

{ 
    action:"auth", 
    device_id: "string", 
    auth_key: "string", 
    user: "string" 
} 

を含むJSONオブジェクトを送信し、サーバーに接続し-when

、クライアントがキーを持っている必要があり、サーバーに接続するには :私は基本的なセキュリティロジックを実装しましたサーバーは、キーが正しい場合にセッションIDで応答するか、接続を切断します。 - これにより、クライアントから送信されたすべてのデータは、そのセッションIDを持つJSONオブジェクトになります。落ちた

WebSocketプロトコルはJSONをサポートしていないため、JSON.stringify()とJSON.parse()を使用してデータを送信する必要があります。また、セッションIDこれは時間がかかり、アプリケーションはもはや滑らかではありません(それ以前)。

たとえば、マウスポインタの動きが記録されている場合、そのデータはマウスが動いているときにサーバーに送信されるため、短時間でデータを送信します。 と論理が実装されているため - 誰がアクセスしないと承認せずに、コマンドを送ることができるように、サーバーをセキュア

:私の懸念があるすべての

{ 
    session_id: "string", 
    user: "string" 
    action:"mousemove", 
    position: { 
     x: int, 
     y: int 
    } 
} 

でスムーズ。

-

本当にリアルタイムキープ - が本当にあなたの通信を安全にするために

答えて

2

(可能であればJSONのように)良好なデータ形式を持って、あなたはTLS接続を使用する必要があります。 ユーザー認証でやっていることは大丈夫です。

しかし、認証時間が問題になります。おそらく、セッションIDの検証をより迅速に行うために、セッションキャッシュを実装する必要があります。

JSONは、サイズの観点からネットワークデータを転送するのに最適なフォーマットではありませんが、WebSocketの仕様ではフォーマットが指定されていません。使用するものによって異なります。

コミュニケーションを円滑にするために、クライアント側でデータを集約し、たとえば1秒に1回このデータを送信できます。私はあなたが実際にあまりマウス座標を必要としないと信じています。

+0

エンコードしてデコードする必要がなければ、JSONは完璧です。しかし、マウスは遠隔にポインタ(赤い点)を移動するので、1秒間に1回送信することは非常に悪いので、リアルタイムであることが必要です – Xsmael

+0

リアルタイムでマウスの移動イベントが毎秒数百回トリガされますたくさんのリクエストが必要ですか? –

+0

見て、私は1つのコンピュータ上に線を描画すると、私は同じ行をリモートコンピュータ上に描画したい場合、それは高速ではない、十分な、リモートユーザーは、それを待つ必要があります、これは不愉快です、悪い、私はリモートコンピュータ上でレンダリングが終了する前に、私は他のものを描画し始めています – Xsmael

関連する問題