小林 (koichik) さん、
森(mori_dev) です。

HTTPだと、途中のProxyなどによってはUpgrade: が通らない可能性があるため、
HTTPを推奨しているのかもしれない。だから、xhr-polling で使う場合、WebSocket への
Upgrade: 処理は行わないのだし、HTTP でよさそうだとのこと。

わかりました。ありがとうございました。

私の方でさらに調べたところ、 RFC6455 WebSocket ( http://tools.ietf.org/html/rfc6455 )
に、ハンドシェイク時の仕様で、以下のような関係がありそうな記述をみつけたのですが、

    4.2.2. Sending the Server's Opening Handshake


       When a client establishes a WebSocket connection to a server, the
       server MUST complete the following steps to accept the connection and
       send the server's opening handshake.

       1.  If the connection is happening on an HTTPS (HTTP-over-TLS) port,
           perform a TLS handshake over the connection.  If this fails
           (e.g., the client indicated a host name in the extended client
           hello "server_name" extension that the server does not host),
           then close the connection; otherwise, all further communication
           for the connection (including the server's handshake) MUST run
           through the encrypted tunnel [RFC5246].

"otherwise, all further communicatio for the connection (including the
server's handshake) MUST run
through the encrypted tunnel [RFC5246]." だと何か困るのか?だから HTTPS 推奨なのか、
といったところまではたどり着きませんでした。

socket-spec を書いた人が HTTPS を推奨する理由を説明している資料を見つけたら、
この ML で報告しようと思います。

ありがとうございました。



2013年12月8日 1:00 Koichi Kobayashi <koic...@improvement.jp>:

> 小林 (koichik) です。
>
> トランスポートの一つであるWebSocketは、最初HTTP(S)で
> 接続してからUpgrade:によってプロトコルを変更します。
> しかしHTTPだと、途中のProxyなどによってはUpgrade: が
> 通らなかったりするかもしれません。
>
> HTTPSにすれば、途中のProxyなどでは通信の中身が
> 見えないため、トラブルが少なくなると期待して
> 推奨しているのかなと推測してみました。
>
> もっとも、AWSのELBのようにSSLターミネータな
> ところで弾かれるケースもあるわけですが。。。
>
> この理由はトランスポートにXHR等を使う場合は
> 関係なさげですね。
>
> Socket.IOの中の人の意図はわかりませんが、
> 可能性の一つということで。
>
>
> On Sat, 7 Dec 2013 23:48:44 +0900, mori dev <mori.dev.a...@gmail.com>
> wrote:
>
> > はじめまして。
> > ハンドルネーム mori-dev と申します。Node 歴は 3週間ほどです。
> >
> > Socket.IO の HTTP リクエストで、URI スキーマとして HTTPS が socket.io-spec
> > で推奨されている理由はなんでしょうか。
> >
> > socket.io-spec ( https://github.com/LearnBoost/socket.io-spec#uri-scheme)
> > というページで、Socket.IO の HTTP リクエストで、URI スキーマとして HTTPS が socket.io-spec
> > で推奨されています。
> >
> >     URI scheme
> >        The URI scheme is decided based on whether the client requires a
> > secure
> >        connection or not. Defaults to http, but https is the recommended
> > one.
> >
> > この根拠は何でしょうか。とくにふかよみするようなところではなく、本文から読み取れるとおり、通信が暗号化されていて HTTP
> > よりセキュアだから、ということでしょうか。
> > publich key の 「SPDYやQUIC登場の背景。Webの進化がプロトコルを変えつつある。HTML5 Conference 2013 (
> >
> http://www.publickey1.jp/blog/13/spdyquicwebtcphtml5_conference_2013.html)
> 」という記事には「HTTPSではTCPコネクションを複数張っているので、1つが欠損してもほかのTCPコネクションは関係なくデータを送れます。」とあります。これも推奨する根拠と関係があるのでしょうか。
> >
> > Socket.IO の v0.9.16 を、xhr-polling, jsonp-polling
> > で利用する予定で、調査していて、疑問に思い、質問しました。
> > たとえば、以下のような http リクエストではなく
> >
> >
> >
> http://localhost:8081/socket.io/1/xhr-polling/sIp1vNChR6RLWu74equ1?t=1386426845697
> >
> > https モジュールを使った結果に対し、socket モジュールを使い、
> >
> >
> >
> https://localhost:8081/socket.io/1/xhr-polling/sIp1vNChR6RLWu74equ1?t=1386426845697
> >
> > といったふうにするのが推奨されているようだ、という認識です。
> >
> >
> > 関連リンク
> >
> >   * https://github.com/LearnBoost/socket.io-spec#uri-scheme
> >   *
> >
> https://github.com/Jxck/socket.io-spec#uri-%E3%82%B9%E3%82%AD%E3%83%BC%E3%83%9E
> >
> > --
> >
> > ---
> > このメールは Google グループのグループ「Node.js 日本ユーザグループ」の登録者に送られています。
> > このグループから退会し、メールの受信を停止するには、nodejs_jp+unsubscr...@googlegroups.comにメールを送信します。
> > その他のオプションについては、https://groups.google.com/groups/opt_out にアクセスしてください。
>
>
> --
> {
>   name: "Koichi Kobayashi",
>   mail: "koic...@improvement.jp",
>   blog: "http://d.hatena.ne.jp/koichik/";,
>   twitter: "@koichik"
> }
>
> --
>
> ---
> このメールは Google グループのグループ「Node.js 日本ユーザグループ」の登録者に送られています。
> このグループから退会し、メールの受信を停止するには、nodejs_jp+unsubscr...@googlegroups.comにメールを送信します。
> その他のオプションについては、https://groups.google.com/groups/opt_out にアクセスしてください。
>

-- 

--- 
このメールは Google グループのグループ「Node.js 日本ユーザグループ」の登録者に送られています。
このグループから退会し、メールの受信を停止するには、nodejs_jp+unsubscr...@googlegroups.com にメールを送信します。
その他のオプションについては、https://groups.google.com/groups/opt_out にアクセスしてください。

メールによる返信