This new load balancer, which also supports the WebSocket protocol and HTTP/2, operates at the application layer and provides content-based routing support.
https://aws.amazon.com/about-aws/whats-new/2016/08/announcing-application-load-balancer-for-elastic-load-balancing/
The Websocket protocol was designed to be negotiated over an HTTP connection (though strictly speaking it could be run over other transports).
The WebSocket Protocol is designed to supersede existing bidirectional communication technologies that use HTTP as a transport layer to benefit from existing infrastructure
https://www.rfc-editor.org/rfc/rfc6455
However, this means that the infrastructure must support the necessary extensions to HTTP that websockets require in order to negotiate and operate.
ALB introduced support for these extensions.
ELB Classic Load Balancers did not support the extensions, so the only way to implement websockets in ELB Classic was to disable the HTTP features and run the balancer in a more transparent TCP mode, with instances behind the balancer that handled all of the websocket interactions.