Why isn't WEBSOCKET_XHR the default?

Concerning the
@Push
annotation.

I’m just wondering why
WEBSOCKET_XHR
isn’t the default with the
@Push
annotation ? If I understood correctly then if the setting is the default of
WEBSOCKET
then there’s will be no ServletRequest. I can’t really comprehend the implication of that but it sounds severe to me.

I’m doing container-based authentication so I believe I would need
transport=WEBSOCKET_XHR
and then I came to think why you wouldn’t want
transport=WEBSOCKET_XHR
rather than
transport=WEBSOCKET
in almost all cases ?

How does WEBSOCKET differ from WEBSOCKET_XHR for push transport? Is one better than the other? Is one more reliable for clients that may be behind firewalls/proxies?