Re: [hybi] #1: HTTP Compliance

Greg Wilkins <gregw@webtide.com> Mon, 17 May 2010 12:07 UTC

Return-Path: <gregw@webtide.com>
X-Original-To: hybi@core3.amsl.com
Delivered-To: hybi@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 188D528C10F for <hybi@core3.amsl.com>; Mon, 17 May 2010 05:07:26 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -0.254
X-Spam-Level:
X-Spam-Status: No, score=-0.254 tagged_above=-999 required=5 tests=[AWL=-0.255, BAYES_50=0.001]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id oMlo-OvW0W9X for <hybi@core3.amsl.com>; Mon, 17 May 2010 05:07:25 -0700 (PDT)
Received: from mail-wy0-f172.google.com (mail-wy0-f172.google.com [74.125.82.172]) by core3.amsl.com (Postfix) with ESMTP id 0F1EE3A6B90 for <hybi@ietf.org>; Mon, 17 May 2010 05:01:07 -0700 (PDT)
Received: by wyb42 with SMTP id 42so2513551wyb.31 for <hybi@ietf.org>; Mon, 17 May 2010 05:00:53 -0700 (PDT)
Received: by 10.227.155.204 with SMTP id t12mr1938735wbw.29.1274097652740; Mon, 17 May 2010 05:00:52 -0700 (PDT)
Received: from [192.168.0.100] (host116-234-static.43-88-b.business.telecomitalia.it [88.43.234.116]) by mx.google.com with ESMTPS id p29sm8250047wbe.10.2010.05.17.05.00.51 (version=TLSv1/SSLv3 cipher=RC4-MD5); Mon, 17 May 2010 05:00:52 -0700 (PDT)
Message-ID: <4BF12FF1.2020101@webtide.com>
Date: Mon, 17 May 2010 14:00:49 +0200
From: Greg Wilkins <gregw@webtide.com>
User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.9) Gecko/20100423 Thunderbird/3.0.4
MIME-Version: 1.0
To: "hybi@ietf.org" <hybi@ietf.org>
References: <068.d07026741c6694cd80652d2a7d34f236@tools.ietf.org> <4BF106AD.6020506@webtide.com> <Pine.LNX.4.64.1005170918310.25609@ps20323.dreamhostps.com> <4BF11920.2080307@webtide.com> <Pine.LNX.4.64.1005171039050.25609@ps20323.dreamhostps.com>
In-Reply-To: <Pine.LNX.4.64.1005171039050.25609@ps20323.dreamhostps.com>
X-Enigmail-Version: 1.0.1
Content-Type: text/plain; charset="ISO-8859-1"
Content-Transfer-Encoding: 7bit
Subject: Re: [hybi] #1: HTTP Compliance
X-BeenThere: hybi@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: Server-Initiated HTTP <hybi.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/hybi>, <mailto:hybi-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/hybi>
List-Post: <mailto:hybi@ietf.org>
List-Help: <mailto:hybi-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/hybi>, <mailto:hybi-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 17 May 2010 12:07:26 -0000

On 17/05/10 13:20, Ian Hickson wrote:
> On Mon, 17 May 2010, Greg Wilkins wrote:
>>
>> The server is going to have to send responses and is currently faced 
>> with a difficult (or impossible) choice between sending a HTTP compliant 
>> or a websocket compliant response.
> 
> If the server is a Web Socket server, and it received a request from a 
> Web Socket client, then why would it care about HTTP?
> 
> If the server is not a Web Socket server, then why would it ever consider 
> sending a response back using Web Sockets?
> 
> If the server is aware of Web Sockets and HTTP, and gets a request from an 
> HTTP client, then why would it respond with Web Sockets?
> 
> I really don't understand what the choice is. In every situation I can 
> see, there's an unambiguous right response.

This is not an exhaustive list and you left out the situation
that I have been describing in my examples.

   The server is aware of both web sockets and HTTP and
   receives a request from a websocket client that is
   to be rejected.

For one of the many reasons I've outlined in my other email, that
request is handled either by code that does not know about
websockets, or is unable to act as the websocket spec requires
(ie closing connection).

Thus the only possible choice is for the server to send
a compliant HTTP response, which is contrary to the websocket
specification.


> > In reality, clients and servers are going to have to talk compliant HTTP
> > to each other to deal with these cases - regardless of whatever the
> > protocol spec says.
> I have no idea what this means.

Websocket clients are going to receive 404's, 503's etc.
They are going to have to handle them sensibly and report
reasonable errors to the user.

There are also arguments that it is desirable to allow
clients to actually interpret some of these responses.
It could for example handle a 401 or a 302.


> Web Socket servers will not send 4xx and 5xx responses.
> > So you can continue to pretend that these conversations will never
> > actually happen.... but that will not change the reality that they will.
> Why would they happen?

Please try reading some of the many examples that I have sent in
detail, but in summary:

  + authentication cookie missing
  + wrong URL given to the websocket client.
  + poor deployment (with apache or similar in front or
    in a server that does not support websocket).
  + some other exception made the webapplication fail
    to start, so the container sends a 503
  + some exception in handling the request causes a 500
  + some stupid caching proxy sends a 200 response


Websocket clients are going to receive 404's, 503's etc.
They are going to have to handle them sensibly and report
reasonable errors to the user.

regards