netty websocket protocols support - websocket

I tried to look this over in the Netty documentation but was unable to find it : which all websocket protocols does Netty websocket implementation support ?
I am trying to check for browser compatibility and hence also wanted to see the protocols as mentioned above. Going through the websocket server example in Netty 3.5.3 , I see in the WebSocketServerIndexPage class that window.MozWebSocket is also used , hence am I right that hybi-07 and hybi-10 is also supported without any specific code to be written? (Pardon me I am not much aware of the differences in the various protocols but it seems to be mentioned everywhere).

Netty supports protocol versions HyBi 00 (which is the same as Hixie 76), HyBi 8-10 and HyBi 13-17 (17 is the same as IETF 6455).
Each browser supports a single version of the protocol. HyBi 00-76 covers current released versions of iOS. IETF 6455 covers recent versions of Chrome and Firefox (and Opera if once they enable it by default), and IE 10. For browsers without native WebSocket support but with Flash you can use web-socket-js as a fallback and that supports IETF 6455 (albeit without binary data types).
In other words, Netty supports basically all browsers that have WebSocket support.

According to the netty api docs, it supports 3 versions of the Hybi drafts - 00, 07 and 10 as well as RFC 6455.
This will give you support for most browsers as summarised by http://en.wikipedia.org/wiki/WebSocket.

Related

How to upgrade an HTTP/3 connection into WebSocket?

Is HTTP/3 compatible with WebSocket?
Is there any solution for this?
While there exist RFC 8441 that specifies how to bootstrap WebSocket over HTTP/2, there is not yet such RFC (in final form) for HTTP/3.
However, given that HTTP/2 and HTTP/3 are quite similar (at the HTTP/x framing layer), this is in the work at this draft RFC: https://www.ietf.org/archive/id/draft-hamilton-httpbis-h3-websockets-00.html.
I expect browsers and libraries to implement this draft RFC in the following months, like it happened for RFC 8441.
Currently, a browser will either open a separate WebSocket connection, or use an existing HTTP/2 connection as specified by RFC 8441.

Do we have Support for sending Traffic in HTTP2.0 Version in ZAProxy

Currently if I scan(from both UI and CLI) using ZAProxy it sends HTTPS Traffic using HTTP1.1 version, Do we have any Support or Workaround to send HTTPS Traffic using HTTP2.0 version in ZAProxy.
Any help on this is much appreciated
No ZAProxy does not support HTTP/2 at this time.
The Paros networking layer used by ZAP is old, and lacks support of modern options such as HTTP/2. They planned to replace this but there is no ETA as of now.
refer the thread : https://github.com/zaproxy/zaproxy/issues/1765

Is HTTP/2 without SPDY possible yet?

Most browsers do support HTTP/2 and so do some servers.
Akamai for example offers a HTTP/2 testpage (https://http2.akamai.com/). When I visit this page in chrome and go to chrome://net-internals/#spdy the page is listed with the protocol h2-14 (HTTP/2 draft 14). But when I open the console on the akamai page and type window.chrome.loadTimes() the property wasFetchedViaSpdy is true. Why is this? The Akamai-page is HTTP/2, not SPDY, roght?
Another thing I dont get is this tutorial (https://www.gatherdigital.co.uk/blog/how-to-setup-http-2-support/527). It says:
"How to setup HTTP/2 support (nginx, apache, plesk) [...]
Well, not quite HTTP/2, it's still mod_spdy."
What is this HTTP/2 "over" SPDY thing? The reason for my question is i want to do some meassurement on which pages make use of which protocol.
Long story short: SPDY is dead, long live HTTP/2!
Asking whether "HTTP/2 is possible without SPDY" implies that HTTP/2 somehow depends on SPDY. That isn't the case. Instead, HTTP/2 and SPDY are so similar that many implementations are hacking their existing SPDY support to be HTTP/2. There's also a lot of people who think HTTP/2 is SPDY, or get sloppy with their terminology. They're different protocols.
SPDY is a non-standard (but open) extension to HTTP/1.1 by Google designed to speed up web site loading and interaction and eliminate a lot of the hacks people do to reduce the number of connections. HTTP/2 started with SPDY and ran from there to create a new, standard protocol incompatible with both HTTP/1.1 and SPDY.
Many people treat SPDY and HTTP/2 as the same things, they're not. There have been significant changes in the standardization process between HTTP/2 and SPDY so that SPDY and HTTP/2 are not compatible. But they're really close, so many HTTP/2 implementations are just hacked SPDY implementations.
Many web servers and clients implemented SPDY even though it wasn't a standard. The performance gains were just too good to pass up.
Now that HTTP/2 is official, SPDY has been officially deprecated in favor of HTTP/2 and will be withdrawn as a standard in 2016. Web clients and servers are working to switch over. While the clients have adopted HTTP/2 very fast, server support seems to be lagging.
As of this writing, HTTP/2 has only been a standard for six weeks. Give it some more time. References to SPDY will be hanging around in HTTP/2 implementations, but that will be rapidly cleaned up. Firefox 36.0.4's Network console properly reports the protocol version as HTTP/2.
As for finding out whether HTTP/2 is used, look at the HTTP response object, it should have the protocol used.

Does websockets works only with safari browser?

I trying to implement chat application using websockets.But the problem is , it is working only with safari 5. When am trying to execute in Firefox v14 or Chrome v21 ,am getting the error "Unsupported Websocket version: 13".I think these versions of Firefox and Chrome supports Websockets but i dont know to eliminate that error.
http://angelozerr.wordpress.com/2011/07/23/websockets_jetty_step1/ From this URL i wrote source code chat App.
Please help me.
Thanks in Advance.
Safari 5 supports only a legacy draft version of WebSocket. All of the current versions of the other browsers (including safari 6) support the final RFC 6455 version (which is version 13). It is likely that the websocket server that you are using only supports draft spec clients. You may need to upgrade to the latest version of your server software/library or otherwise double check that your websocket server supports RFC6455.

Is there any framework that supports Websocket and falls back to other methods when it is not supported on client's browser?

I was doing AJAX implementation and would like to use Websocket when the client web browser supports it. Is there any frameworks that supports Websocket but falls-back to other methods when it detects the client side doesn't support Websocket.
There is also Atmosphere
http://atmosphere.dev.java.net
which support both client and server.
Yes sort of see www.kaazing.org
Kaazing Gateway supports all major browsers (Firefox version 1.5 and higher, Internet Explorer version 5.5 and higher, Safari version 3.0 and higher, Opera version 9.5 and higher, and Google Chrome version 0.2 and higher).
Socket.io is designed for this.
http://socket.io/
It is purely javascript that tries several different transport methods including XHR long-polling, WebSocket and FlashSocket amongst others.
You could also use Nirvana from www.my-channels.com.
When WebSocket is not supported it will fall back to a Comet based approach transparently.
Of course, you could try using jWebSocket, it is a pure Java/JavaScript high speed bidirectional communication solution for the Web - secure, reliable and fast. jWebSocket is provided to you to create innovative HTML5 based streaming and communication applications on the web. HTML5 WebSockets will replace the existing XHR approaches as well as Comet services by a new flexible and ultra high speed bidirectional TCP socket communication technology. jWebSocket is an open source Java and JavaScript implementation of the HTML5 WebSocket protocol with a huge set of extensions. Some demos or examples can be seen for you in the website, you can visit it here: https://jwebsocket.org/

Resources