[webphone-discuss] Re: Update to Angular 5; ServiceWorker needs backend support

  • From: Marcos Gutierrez <gmarcos87@xxxxxxxxx>
  • To: Emil Kroymann <emil.kroymann@xxxxxxxxx>, "webphone-discuss@xxxxxxxxxxxxx" <webphone-discuss@xxxxxxxxxxxxx>
  • Date: Fri, 2 Mar 2018 13:17:54 -0300

Hi Emil,

Yes, everything related to the service worker must be re-implemented in
order to upgrade to Angular 5. In Angular 4 there was no official way to
do it and the form I chose ended up not being the definitive one.
Apparently the Angular team doesn't go at the same speed as the Google
people, who advertised PWA everywhere without having a solution to
develop them.
Changing the push notification payload is not difficult. In order to
send the notifications we use a kind of gateway, to which kamailio sends
a simple HTTP post request and the server is in charge of giving it
notification form, searching for the user's tokens, etc.

The code is this https://github.com/saycel/webpush-server

As this server acts as an intermediary between Kamailio and the PWA, it
will not be necessary to make any changes in Kamailio. It's just a
change in how the response json is formed

Personally, I think it's best to re-implement our service worker.
Forcing a custom solution on libraries that are already deprecated does
not seem to have much future.

I hope that this answer will be useful and not too late. I thought I was
on the mailing list but I was wrong. I'm subscribed now.

Cheers, Marcos.

El 01/03/18 a las 11:15, Emil Kroymann escribió:

Hi list, hi Marcos,

I started updating webph.one to Angular 5. My work in progress can be
viewed at github.com:ekroymann/webph.one.git.

I started with following the instructions
at https://angular-update-guide.firebaseapp.com/w. This is mostly
done. There are some new optional features, which we might want to
start using. I did not get into this yet.

It seems, that the material design dependencies still need to be
upgraded, since when compiling I get warnings about incompatibility.

However, the main problem is the service worker used for push. The
previous implementation relied on extending
@angular/service-worker@^1.0.0-beta.16, a pretty old version as we can
see. This version is not compatible anymore with Angular 5. The new
version of @angular/service-worker has a completely different
interface and also does not allow extension anymore. The extension of
the previous version implemented receiving the push notification and
displaying a notification to the user. The new version of
@angular/service-worker comes with a generic service worker, that has
built in support for receiving push notfications and displaying
notifications to the user. 

BUT: this relies on the backend sending a notification payload to be
displayed as is in the push notification.

We now have two options: either implementing the ServiceWorker
completely our selves and not using @angular/service-worker, or
changing the backend to include the notification payload in the push

I can work on this, but I wanted to know what is the preferred way to
go forward. I think, when changing the backends, we will have some
problems with testing, since we need a new version of the backend
deployed somewhere, along with the old version of the backend for the
previous versions of the app.

What is your opinion?


Other related posts: