[whatwg] WebSockets feedback

Simon Pieters simonp at opera.com
Thu Jul 22 14:48:07 PDT 2010


On Thu, 22 Jul 2010 22:18:46 +0200, Ian Hickson <ian at hixie.ch> wrote:

> On Thu, 22 Apr 2010, Simon Pieters wrote:
>>
>> WebSocket data framing
>>
>> [[
>> 8. If the frame type is 0xFF and the length was 0, then run the  
>> following
>> substeps:
>> ]]
>>
>> This will be true for 0xFF 0x80 0x00, or any number of leading 0x80  
>> bytes in
>> length. Presumably the frame should only be treated as a closing  
>> handshake if
>> it was 0xFF 0x00.
>
> Why?

Because I expected the closing frame to be the exact sequence 0xFF 0x00  
and nothing else. It makes the protocol simpler to understand and explain.


> On Thu, 22 Apr 2010, Simon Pieters wrote:
>>
>> establishing a WebSocket connection:
>>
>> [[
>> 41. ... or if there are any entries in the fields list whose names are  
>> the
>> empty string, then fail the WebSocket connection and abort these steps.  
>> ...
>> ]]
>>
>> I think it is better to check for this while parsing the fields, by  
>> checking
>> if the name byte array is empty here:
>>
>> [[
>> 34. Read a byte from the server.
>>
>> ...
>> If the byte is 0x3A (ASCII :)
>> Move on to the next step.
>> ]]
>
> Why?

This was moot.


> On Thu, 6 May 2010, Simon Pieters wrote:
>> On Tue, 20 Apr 2010 16:00:36 +0200, Simon Pieters <simonp at opera.com>  
>> wrote:
>>
>> > [[
>> > WebSocket object with an open connection must not be garbage  
>> collected if
>> > there are any event listeners registered for message events.
>> > ]]
>> >
>> > Shouldn't it also not be garbage collected if there are listeners for  
>> open,
>> > error and close? What about when the connection is not yet  
>> established?
>>
>> I think the policy should be:
>>
>> if readyState is CONNECTING:
>>  has 'open' event listener: don't collect
>>  has 'message' event listener: don't collect
>>  has 'error' event listener: don't collect
>>  has 'close' event listener: don't collect
>>
>> if readyState is OPEN:
>>  has 'open' event listener: OK to collect
>>  has 'message' event listener: don't collect
>>  has 'error' event listener: don't collect
>>  has 'close' event listener: don't collect
>>
>> if readyState is CLOSING:
>>  has 'open' event listener: OK to collect
>>  has 'message' event listener: OK to collect
>>  has 'error' event listener: OK to collect
>>  has 'close' event listener: don't collect
>>
>> if readyState is CLOSED:
>>  has 'open' event listener: OK to collect
>>  has 'message' event listener: OK to collect
>>  has 'error' event listener: OK to collect
>>  has 'close' event listener: OK to collect
>
> Agreed.

Please see  
http://lists.whatwg.org/pipermail/whatwg-whatwg.org/2010-May/026400.html


> On Tue, 20 Jul 2010, Simon Pieters wrote:
>>
>> The WebSocket spec restricts the value of the subprotocol that the
>> client is allowed to send to the server (see step 3 in the WebSocket()
>> constructor algorithm). However there's no restriction on the server
>> side (see step 2 of Sending the server's opening handshake). The client
>> could not have asked for any subprotocol, but the server can still
>> respond with a subprotocol, and the connection will be accepted.
>>
>> Shouldn't the server have the same restriction as the client?
>
> The idea is that the client can try to connect to a server without  
> knowing
> what protocol it supports at all, and find out what protocol it supports.
> This also allows servers to be updated to list a subprotocol in
> preparation for supporting multiple subprotocols, without having to
> explicitly hide the subprotocol declaration in the case when the UA  
> didn't
> specify one.

The problem I was discussing is the following scenario:

1. Client opens a websocket without any specified subprotocol.
2. Server replies with subprotocol 'räksmörgås'.
3. Client accepts the connection.

Next time, the client cannot open a websocket with the subprotocol that  
the server used, since räksmörgås is non-ascii and will raise an exception  
if used in the constructor. Hence, I think the server should only be  
allowed to use ascii subprotocols (without spaces) to conform to the spec.

-- 
Simon Pieters
Opera Software



More information about the whatwg mailing list