4

Node.jsHTTPサーバーをセットアップしました。パス'/'をリッスンし、getリクエストで空のHTMLテンプレートを返します。

このテンプレートには、サーバーとのSocket.IO接続を作成するRequire.jsクライアントスクリプトが含まれています。

次に、クライアントとサーバー間のすべての通信はWebSocketsによって提供されます。

接続時に、サーバーは認証を必要とします。認証Cookieがある場合、クライアントはそれらを検証のためにサーバーに送信します。Cookieがない場合、クライアントはログインビューをレンダリングし、ユーザー入力を待ちます。

これまでのところ、すべてが機能しています。資格情報を検証した後、ユーザーのSIDを作成し、それを使用してユーザーのアクセス権を管理します。次に、メインビューをレンダリングすると、アプリケーションが起動します。

質問:

  • クライアントにスクリプトを送信するためにHTTPのみを使用しているので、HTTPの代わりにHTTPSを使用する必要がありますか?(注:Cookieの代わりにローカルストレージを使用することを計画しています)

  • HTTPなしで純粋なWebSocketを使用することの欠点はありますか?

  • それが機能する場合、なぜ誰もそれを使用していないのですか?

4

2 に答える 2

2

クライアントにスクリプトを送信するためにHTTPのみを使用しているので、HTTPの代わりにHTTPSを使用する必要がありますか?(注:Cookieの代わりにローカルストレージを使用することを計画しています)

いいえ、WebSocketのハンドシェイクにはHTTP/HTTPSが必要です。HTTPまたはHTTPSの選択は、セキュリティの観点からです。スクリプトを送信するためだけに使用したい場合は、害はありません。ページにユーザーログイン/認証を実装する場合は、HTTPSを使用する必要があります。

HTTPなしで純粋なWebSocketを使用することの欠点はありますか?

WebソケットとHTTPは大きく異なります。純粋なWebSocketを使用する場合、HTTPを見逃すことになります。HTTPは、クロスプラットフォームのWebサービスに適した選択肢です。ドキュメントのトラバーサル/取得には適していますが、これは1つの方法です。Webソケットは、単一のTCP接続を介して全二重通信チャネルを提供し、Ajax、Reverse Ajax、Cometなどの回避策やハックを取り除くことができます。注意すべき重要な点は、両方が共存できることです。したがって、HTTPを除外せずにWebソケットを目指してください。

それが機能する場合、なぜ誰もそれを使用していないのですか?

私たちはHTTPの時代に生きており、Webソケットは比較的新しいものです。長期的には、Webソケットが人気を博し、Webサービスのシェアを拡大​​するでしょう。最近まで、多くのブラウザはWebソケットを適切にサポートしていませんでした。ここを参照してください。IE10は、WebソケットをサポートするIEの最新かつ唯一のバージョンです。非常に人気のあるサーバーであるnginxは、2013年2月から3月までWebソケットをサポートしていませんでした。Webソケットが主流になるまでには時間がかかりますが、そうなるでしょう。

于 2013-03-26T19:18:01.090 に答える
1

あなたの質問はこれにかなり似ています

WebSocketが利用可能なのになぜAJAXを使用するのですか?

結局のところ、これらは両方とも異なる目的で作成されましたが、通常のHTTPリクエストで実行できるすべてではないにしても、ほとんどの場合にWebソケットを使用できます。

WebSocketを介して認証データを送信しているように見えるのでHTTPSを使用することをお勧めします(SSLも使用しますね?)が、それは「必要」の定義によって異なります。

欠点-古いブラウザのサポートの欠如

これは必要ではなく、まだ「比較的新しい」ため、他の多くの状況では使用されません。

于 2013-03-26T17:00:19.067 に答える