Quantcast

[aerogear-dev] AeroGear WebPush Java Client

classic Classic list List threaded Threaded
6 messages Options
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

[aerogear-dev] AeroGear WebPush Java Client

Idel Pivnitskiy
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].


_______________________________________________
aerogear-dev mailing list
[hidden email]
https://lists.jboss.org/mailman/listinfo/aerogear-dev
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: [aerogear-dev] AeroGear WebPush Java Client

Idel Pivnitskiy
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...


Best regards,
Idel Pivnitskiy
--

On Wed, Aug 19, 2015 at 7:30 AM, Idel Pivnitskiy <[hidden email]> 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].



_______________________________________________
aerogear-dev mailing list
[hidden email]
https://lists.jboss.org/mailman/listinfo/aerogear-dev
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: [aerogear-dev] AeroGear WebPush Java Client

Erik Jan de Wit
will this replace the java client [1] we currently have? Or will can we extend it?


On Tue, Mar 15, 2016 at 9:17 PM, Idel Pivnitskiy <[hidden email]> wrote:
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...


Best regards,
Idel Pivnitskiy
--

On Wed, Aug 19, 2015 at 7:30 AM, Idel Pivnitskiy <[hidden email]> 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].



_______________________________________________
aerogear-dev mailing list
[hidden email]
https://lists.jboss.org/mailman/listinfo/aerogear-dev



--
Cheers,
       Erik Jan

_______________________________________________
aerogear-dev mailing list
[hidden email]
https://lists.jboss.org/mailman/listinfo/aerogear-dev
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: [aerogear-dev] AeroGear WebPush Java Client

Matthias Wessendorf
In reply to this post by Idel Pivnitskiy
awesome!

wanna have it included in the aerogear organization ? 

On Tue, Mar 15, 2016 at 9:17 PM, Idel Pivnitskiy <[hidden email]> wrote:
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...


Best regards,
Idel Pivnitskiy
--

On Wed, Aug 19, 2015 at 7:30 AM, Idel Pivnitskiy <[hidden email]> 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].



_______________________________________________
aerogear-dev mailing list
[hidden email]
https://lists.jboss.org/mailman/listinfo/aerogear-dev



--

_______________________________________________
aerogear-dev mailing list
[hidden email]
https://lists.jboss.org/mailman/listinfo/aerogear-dev
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: [aerogear-dev] AeroGear WebPush Java Client

Idel Pivnitskiy
will this replace the java client [1] we currently have? Or will can we extend it?

Think that it will replace SimplePush in the future.

wanna have it included in the aerogear organization ? 

it would be great :)

Best regards,
Idel Pivnitskiy
--

On Wed, Mar 16, 2016 at 10:46 AM, Matthias Wessendorf <[hidden email]> wrote:
awesome!

wanna have it included in the aerogear organization ? 

On Tue, Mar 15, 2016 at 9:17 PM, Idel Pivnitskiy <[hidden email]> wrote:
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...


Best regards,
Idel Pivnitskiy
--

On Wed, Aug 19, 2015 at 7:30 AM, Idel Pivnitskiy <[hidden email]> 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].



_______________________________________________
aerogear-dev mailing list
[hidden email]
https://lists.jboss.org/mailman/listinfo/aerogear-dev



--

_______________________________________________
aerogear-dev mailing list
[hidden email]
https://lists.jboss.org/mailman/listinfo/aerogear-dev


_______________________________________________
aerogear-dev mailing list
[hidden email]
https://lists.jboss.org/mailman/listinfo/aerogear-dev
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: [aerogear-dev] AeroGear WebPush Java Client

Matthias Wessendorf
Having this client allows us a better integration of WebPush into UPS, at some point (I need to check the javaagent for WildFly's bootclasspath anyways for my PoC on APNs' HTTP/2 APIs, like [1]).

However, I was wondering how 'up-to-date' our server actually is, regarding the spec




On Wed, Mar 16, 2016 at 10:34 AM, Idel Pivnitskiy <[hidden email]> wrote:
will this replace the java client [1] we currently have? Or will can we extend it?

Think that it will replace SimplePush in the future.

wanna have it included in the aerogear organization ? 

it would be great :)

Best regards,
Idel Pivnitskiy
--

On Wed, Mar 16, 2016 at 10:46 AM, Matthias Wessendorf <[hidden email]> wrote:
awesome!

wanna have it included in the aerogear organization ? 

On Tue, Mar 15, 2016 at 9:17 PM, Idel Pivnitskiy <[hidden email]> wrote:
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...


Best regards,
Idel Pivnitskiy
--

On Wed, Aug 19, 2015 at 7:30 AM, Idel Pivnitskiy <[hidden email]> 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].



_______________________________________________
aerogear-dev mailing list
[hidden email]
https://lists.jboss.org/mailman/listinfo/aerogear-dev



--

_______________________________________________
aerogear-dev mailing list
[hidden email]
https://lists.jboss.org/mailman/listinfo/aerogear-dev


_______________________________________________
aerogear-dev mailing list
[hidden email]
https://lists.jboss.org/mailman/listinfo/aerogear-dev



--

_______________________________________________
aerogear-dev mailing list
[hidden email]
https://lists.jboss.org/mailman/listinfo/aerogear-dev
Loading...