New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.
Starred by 25 users

Issue metadata

Status: Fixed
Owner:
Closed: Aug 2015
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: All
Pri: 2
Type: Feature


Sign in to add a comment

Tracking New WebSocket implementation in Chromium net/

Project Member Reported by ricea@chromium.org, Apr 5 2013 Back to list

Issue description

Tracking bug for the new WebSocket implementation under net/.

Design doc (very old): https://docs.google.com/a/google.com/document/d/11n3hpwb9lD9YVqnjX3OwzE_jHgTmKIqd6GvXE9bDGUg/edit
 
Blockedon: chromium:226933
Cc: yhirano@chromium.org
 Issue 226933 :	Create a runtime switch for WebSocket implementation

Project Member

Comment 2 by bugdroid1@chromium.org, Apr 5 2013

Labels: Cr-Blink
Project Member

Comment 3 by bugdroid1@chromium.org, Apr 6 2013

Labels: -Cr-Content-WebSockets Cr-Blink-WebSockets

Comment 4 Deleted

Comment 5 by ricea@chromium.org, Apr 12 2013

Rough task list. Issues will be created for individual tasks as they are started.

* Implement WebSocketChannel
* Implement plain unencrypted WebSocketStream implementation
* Add prototype protocol bootstrapping code to HTTPRequestFactoryImpl, etc. 
* Add flag to switch on the new implementation [ Issue 226933 ]
* Make sure the new implementation can be compiled out when net/ is used as a standalone library
* Create an implementation of WebSocket in Blink that uses the new IPCs
* Refactor the protocol bootstrapping
* Land the first implementation
* Implement SSL WebSocketStream
* Implement mux and mux/SSL WebSocketStream
* Implement SPDY2 and SPDY3 WebSocketStream
* Implement permessage-deflate compression extension
* Implement RFC6455-compliant throttling
* Make protocol logging, error reporting and metrics the same as existing implementation
* Make Chromium tests pass with the flag enabled
* Migrate other (non-renderer) internal users off the old implementation
* Remove the old implementation

Comment 6 by ricea@chromium.org, Apr 12 2013

 Issue 230756 : Implement WebSocketChannel
Blockedon: chromium:237095
Blockedon: chromium:237444

Comment 9 by ricea@chromium.org, May 2 2013

Blockedon: chromium:237496
Blockedon: chromium:239376
Blockedon: -chromium:239376 chromium:118268
Blockedon: chromium:239722

Comment 13 by ricea@chromium.org, May 17 2013

Blockedon: chromium:241811

Comment 14 by ricea@chromium.org, Jun 25 2013

Blockedon: chromium:253812
Blockedon: chromium:257680

Comment 16 by ricea@chromium.org, Jul 23 2013

Blocking: chromium:123862

Comment 17 by ricea@chromium.org, Jul 29 2013

Blockedon: chromium:265329

Comment 18 by ricea@chromium.org, Aug 14 2013

Blocking: chromium:112089

Comment 19 by ricea@chromium.org, Aug 14 2013

Blocking: chromium:180504

Comment 20 by ricea@chromium.org, Aug 14 2013

Blocking: chromium:120553

Comment 21 by ricea@chromium.org, Aug 14 2013

Blocking: chromium:129353

Comment 22 by ricea@chromium.org, Aug 14 2013

Blocking: chromium:169448

Comment 23 by ricea@chromium.org, Aug 26 2013

Blockedon: chromium:279103
Blockedon: chromium:280910

Comment 25 by ricea@chromium.org, Sep 30 2013

Blockedon: chromium:301353
Blockedon: chromium:303568
Blockedon: chromium:310405
Project Member

Comment 28 by bugdroid1@chromium.org, Oct 30 2013

------------------------------------------------------------------------
r231707 | tyoshino@chromium.org | 2013-10-30T01:37:22.253882Z

Changed paths:
   M http://src.chromium.org/viewvc/chrome/trunk/src/net/websockets/websocket_handshake_handler.cc?r1=231707&r2=231706&pathrev=231707
   M http://src.chromium.org/viewvc/chrome/trunk/src/net/websockets/websocket_handshake_handler.h?r1=231707&r2=231706&pathrev=231707

Factor out Sec-WebSocket-Accept computing logic so that the new WebSocket handshake processor can reuse it.

BUG= 226931 

Review URL: https://codereview.chromium.org/48733008
------------------------------------------------------------------------
Blockedon: chromium:316525

Comment 30 by ricea@chromium.org, Jan 23 2014

Blockedon: chromium:337134
Project Member

Comment 31 by bugdroid1@chromium.org, Apr 8 2014

------------------------------------------------------------------
r262325 | yhirano@chromium.org | 2014-04-08T05:16:26.425368Z

Changed paths:
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/browser/renderer_host/render_process_host_impl.cc?r1=262325&r2=262324&pathrev=262325
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/app/generated_resources.grd?r1=262325&r2=262324&pathrev=262325
   M http://src.chromium.org/viewvc/chrome/trunk/src/webkit/common/webpreferences.cc?r1=262325&r2=262324&pathrev=262325
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/renderer/web_preferences.cc?r1=262325&r2=262324&pathrev=262325
   M http://src.chromium.org/viewvc/chrome/trunk/src/webkit/common/webpreferences.h?r1=262325&r2=262324&pathrev=262325
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/public/common/content_switches.cc?r1=262325&r2=262324&pathrev=262325
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/public/common/common_param_traits_macros.h?r1=262325&r2=262324&pathrev=262325
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/public/common/content_switches.h?r1=262325&r2=262324&pathrev=262325
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/about_flags.cc?r1=262325&r2=262324&pathrev=262325
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/browser/renderer_host/render_view_host_impl.cc?r1=262325&r2=262324&pathrev=262325

Delete "Experimental WebSocket" flag from chrome://flags.

It's now managed by RuntimeEnabledFeatures in Blink.

BUG= 226931 

Review URL: https://codereview.chromium.org/225263004
-----------------------------------------------------------------
Project Member

Comment 32 by bugdroid1@chromium.org, Apr 9 2014

The following revision refers to this bug:
  http://src.chromium.org/viewvc/blink?view=rev&rev=171104

------------------------------------------------------------------
r171104 | yhirano@chromium.org | 2014-04-09T03:05:15.897971Z

Changed paths:
   M http://src.chromium.org/viewvc/blink/trunk/Source/platform/RuntimeEnabledFeatures.in?r1=171104&r2=171103&pathrev=171104

Enable ExperimentalWebSocket under "Experimental Web Platform Features".

Since most of layout tests pass, I would like to expose it for
experimental users.

BUG= 226931 
R=tkent@chromium.org

Review URL: https://codereview.chromium.org/228033003
-----------------------------------------------------------------

Comment 33 by ricea@chromium.org, May 26 2014

Blocking: chromium:174956
Blocking: chromium:381035
Labels: -Cr-Blink M-37
Labels: -M-37 M-38
Blink 175580 ("Turn on the new WebSocket implementation by default") is going to be released for M38 (reverted for M37.  crbug.com/381035 ).
It appears that M38 introduced a breaking change  -- I'm seeing binary web socket frames getting truncated to around 130,000 bytes.  My app, which worked prior to M38 sends a 145,708 byte binary frame and it arrives at the server side as a 130,880 byte frame.  This does not happen in Firefox or in M37.


Comment 38 by ricea@chromium.org, Oct 10 2014

bryandonnovan, a WebSocket message is composed of one or more frames. See RFC 6455 section 5.4. The old WebSocket implementation always sent messages in a single frame. To improve scalability, the new implementation may split a message into multiple frames. Usually large messages will be split into 128KB frames.

Your server needs to reassemble fragmented messages.

Incidentally, we recommend that web developers test with the dev channel of Chrome to avoid any nasty surprises. It's available here: https://www.google.com/chrome/browser/index.html?extra=devchannel
Blockedon: chromium:423200
Blockedon: chromium:423201
Can we close this? Maybe we have some remaining tasks but maybe they don't need this home.
Okay with me.
Status: Fixed
Thanks again for bunch of work to get this done, guys.

Comment 44 by tkent@chromium.org, Nov 27 2015

Labels: Cr-Blink-Network-WebSockets

Comment 45 by tkent@chromium.org, Nov 27 2015

Labels: -Cr-Blink-WebSockets

Sign in to add a comment