What's new in WebPush Java Client:
- Updated to the latest aerogear-parent
- Updated Jetty http2-client to the latest version
- Clean up pom.xml
- Subscription and PushMessage objects became to be Serializable
- Refactoring and little improvements
- Added documentation to all public classes and methods - the most
valuable improvement :)
For more information, see [1].
Tests will be coming soon...
[1]
https://github.com/idelpivnitskiy/aerogear-webpush-java-client/commits/ma...
Best regards,
Idel Pivnitskiy
--
Twitter: @idelpivnitskiy <
https://twitter.com/idelpivnitskiy>
GitHub: @idelpivnitskiy <
https://github.com/idelpivnitskiy>
On Wed, Aug 19, 2015 at 7:30 AM, Idel Pivnitskiy <idel.pivnitskiy(a)gmail.com>
wrote:
Hi all!
I've just implemented a lightweight java client for receiving push
messages from AeroGear WebPush Server [1]. It is easy to use and fully
async!
A few words about decision to use Jetty as a HTTP/2 client:
Currently there are only 3 Java libraries, which implement client side of
HTTP/2 protocol [2]: Netty, Jetty and OkHttp. I tried all of them:
- First of all I tried to use OkHttp. This is a lightweight http
client for Android and other Java apps. But currently this library supports
HTTP/2 protocol only via old HTTP/1.1 API. It works well for simple
request-response, but its client API does not allow to use HTTP/2 features,
like Server Push Frames. I looked at GRPC [3], because Googlers use OkHttp
for HTTP/2 transport. But they don't use public API, they use only inner
classes to handle frames and built their own logic atop this classes. It
would be too complicated for our purposes.
- Secondary, I tried to refactor our WebPush console to a client
library. But this way is complicated too. netty-codec-http2 does not
provide a client API, it is only codec, low level protocol implementation.
- Now I use jetty-http2-client. It is easy to configure and use, fast
and async. Jetty provides a user friendly API to handle HTTP/2 streams and
get PUSH_PROMISE frames.
For more information, look at my commit history.
In the future, if there will be more lightweight alternatives than Jetty
(for example, new version of OkHttp or Java 9 API), I will rewrite the
transport layer of my library.
Here is an example, how to use my library [4].
[1]
https://github.com/idelpivnitskiy/aerogear-webpush-java-client
[2]
https://github.com/http2/http2-spec/wiki/Implementations
[3]
https://github.com/grpc/grpc-java/tree/master/okhttp
[4]
https://github.com/idelpivnitskiy/aerogear-webpush-java-client/blob/maste...
Best regards,
Idel Pivnitskiy
--
E-mail: Idel.Pivnitskiy(a)gmail.com
Twitter: @idelpivnitskiy <
https://twitter.com/idelpivnitskiy>
GitHub: @idelpivnitskiy <
https://github.com/idelpivnitskiy>