electron-push-receiver
electron-push-receiver copied to clipboard
The service is currently unavailable
Hi @MatthieuLemoine Thank you for creating a great package. I tried to add in my project and have reference to the example project, can't get the token failed to boot successfully, and get the error as below.
PUSH_RECEIVER:::Error while starting the service StatusCodeError: 503 - "{\n \"error\": {\n \"code\": 503,\n \"message\": \"The service is currently unavailable.\",\n \"status\": \"UNAVAILABLE\"\n }\n}\n"
at new StatusCodeError ($MYHOME/my-electron-app/node_modules/request-promise-core/lib/errors.js:32:15)
at Request.plumbing.callback $MYHOME/my-electron-app/node_modules/request-promise-core/lib/plumbing.js:104:33)
at Request.RP$callback [as _callback] ($MYHOME/my-electron-app/node_modules/request-promise-core/lib/plumbing.js:46:31)
at Request.self.callback ($MYHOME/my-electron-app/node_modules/request/request.js:185:22)
at Request.emit (events.js:315:20)
at Request.<anonymous> ($MYHOME/my-electron-app/node_modules/request/request.js:1154:10)
at Request.emit (events.js:315:20)
at IncomingMessage.<anonymous> ($MYHOME/my-electron-app/node_modules/request/request.js:1076:12)
at Object.onceWrapper (events.js:421:28)
at IncomingMessage.emit (events.js:327:22)
at endReadableNT (internal/streams/readable.js:1327:12)
at processTicksAndRejections (internal/process/task_queues.js:80:21) {
statusCode: 503,
error: '{\n' +
' "error": {\n' +
' "code": 503,\n' +
' "message": "The service is currently unavailable.",\n' +
' "status": "UNAVAILABLE"\n' +
' }\n' +
'}\n',
options: {
url: 'https://fcm.googleapis.com/fcm/connect/subscribe',
method: 'POST',
headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
form: {
authorized_entity: '$MYSENDERID',
endpoint: 'https://fcm.googleapis.com/fcm/send/...',
encryption_key: '',
encryption_auth: ''
},
callback: [Function: RP$callback],
transform: undefined,
simple: true,
resolveWithFullResponse: false,
transform2xxOnly: false
},
.....
}
package.json
{
"devDependencies": {
"electron": "^13.1.4"
},
"dependencies": {
"electron-push-receiver": "^2.1.3"
}
}
It seems endpoint of FCM has changed, how to update again? Thank you very much!
Also getting this error
NOTE: This issue seems to be occurring within push-receiver itself. The subscribe URL for Legacy "FCM HTTP API" was removed??
Also getting this error, is there any workaround for this that we can do?
[Update] This error seems to have stopped happening today. I don't have any official information from Google, so I don't know what happened. 🤔
[Update] This error seems to have stopped happening today. I don't have any official information from Google, so I don't know what happened. 🤔
Did you change anything from your side? cause for me the issue is still there
Hi @Ashmit-Nextus
Did you change anything from your side? cause for me the issue is still there
Unfortunately, I didn't do anything special about it, but it occurred for a few days and then resolved itself. Just last year, there was a similar failure report. I'm just hoping it's not something that happens every year around this time. 😅
https://status.firebase.google.com/incidents/rE4GeaMBDmYefDDuomVL
Oh unfortunately the error is still here for me, can @bhtri @wtesler confirm if something changed for you guys?
I can't confirm, but what I do know is the 503 is coming from a GCM endpoint which I know Google is sunsetting (in favor of FCM), so it might just be the case that the endpoint is no longer available/supported.
On Wed, Jul 7, 2021, 10:50 AM Ashmit @.***> wrote:
Oh unfortunately the error is still here for me, can @bhtri https://github.com/bhtri @wtesler https://github.com/wtesler confirm if something changed for you guys?
— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/MatthieuLemoine/electron-push-receiver/issues/80#issuecomment-875719009, or unsubscribe https://github.com/notifications/unsubscribe-auth/AATABCLYVNNF23C364LE26TTWRZTHANCNFSM47T2HGAQ .
Thank you to everyone who shared and commented! My error is still the same, even though I tried running electron-fcm-demo, and changing my Sender ID here, it still doesn't work (still the same error 😅). and I also tried trying to figure out how it works through @MatthieuLemoine post to make a pull request, but still can't fix it ...... 😭
[Update.2] The issue has started to occur again this morning. 😥 I didn't do anything special about it, so I think you may be right about what you are saying.
Are there any updates?
package & issue is still not update ....
If push-receiver is updated, is it possible to solve the issue? @bhtri
If push-receiver is updated, is it possible to solve the issue? @bhtri
nope, updated to latest 2.1.1, still doesn't work This is an issue originated from FCM service, the client can only retry registerFCM() until it successfully registered. https://github.com/stephen79/electron-push-receiver
so now is there any way that electron app can receive notifications from Firebase Cloud Messaging (FCM)? and also created a question on stackoverflow but still no idea... 😥
As mentioned here, we may no longer be able to invoke the FCM registration endpoint. https://github.com/MatthieuLemoine/push-receiver/issues/47#issuecomment-874251257
So, the possible (realistic) solution might be...using node-gyp, create a native addons for Google's C++ SDK.
- https://medium.com/firebase-developers/how-to-add-firebase-to-your-c-desktop-game-4a177703186e
- https://pspdfkit.com/blog/2018/running-native-code-in-electron-and-the-case-for-webassembly/
Or, migrate to another service, such as Pushy or something.
@bhtri May be you can try a test with stephen79 push receiver. https://github.com/stephen79/electron-push-receiver
He added the retry logic for registering fcm token. We tested it today, after several tempt try, it finally succeeded with interval from several minutes to an hour or more. But at least got fcm token.
It is not published, so you can get it locally build.
Get the source project. Then
-
run npm pack , you will get the .tgz file.
-
copy this xx.tgz file to your project and
-
npm install xx.tgz
-
also you need to re register on error callback. something like below after a retry timer. setTimeout(() => { ipcRenderer.send(WindowEvent.MAIN_WIN, WindowEvent.MainWinEvent.RETRY_REGISTER_PUSH_SERVICE); }, this.retryFcmRegisterInterval);
Increase your retry timer according to the 503 error in this documentation https://firebase.google.com/docs/reference/fcm/rest/v1/ErrorCode
-
build and run your project.
Try if it can work for you eventually.
So, the possible (realistic) solution might be...using node-gyp, create a native addons for Google's C++ SDK.
I've been looking into creating a native addon that links to firebase-cpp-sdk
; it appears as though their SDK can be built for three different targets (Android, iOS, Desktop).
As you would expect, building for Android requires linking to Android/Java specific libraries, and building for iOS requires linking to iOS-specific libraries (Foundation, Cocoa, etc.)
Many of the Firebase API implementations in that SDK do appear to implement the desktop target, but unfortunately it appears Firebase Messaging doesn't. Building Firebase Messaging with the desktop target results in this stub being compiled, rather than anything useful. (see the CMakeLists.txt
here).
I'm going to explore this a little more tomorrow, but with the understanding I have, I can see two possible solutions:
- use the Android/iOS implementations as a reference point to create a JS implementation. FlatBuffers is the library being used by the official SDK for data (de)serialization to/from Firebase Messaging, and there's an official npm module for it, so that would save a lot of hassle.
- implement a working implementation in C++ based on parts of the official SDK, but tied strictly to standard (or cross-platform) libraries. Firebase SDK is centered around the idea of an "app", so more research would need to be done to see how coupled
firebase-cpp-sdk/messaging
is withfirebase-cpp-sdk/app
.
If anyone has been toying around with this idea or has better insight into this than I do (it's been a while since I've played around with C++), I'd be interested to hear how far you've gotten :)
We have been seeing fewer 503 errors over the past few days. I saw a couple of them yesterday but all-in-all it seems to be on the downtrend. Does this match other people's experiences?
@osslate I believe all 3 implementations leverage native platform APIs for push messaging. Firebase SDK does not provide a push implementation, it provides a unified way to access platform provided APIs.
The C++ API, as noted in their docs, targets the platform services.
To write your cross-platform Firebase Cloud Messaging client app with C++, use the Firebase Cloud Messaging API. The C++ SDK works for both Android and iOS, with some additional setup required for each platform.
Same with the javascript implementation, that requires the browser to support it:
The FCM JavaScript API lets you receive notification messages in web apps running in browsers that support the Push API. This includes the browser versions listed in this support matrix and Chrome extensions via the Push API.
Basically, the Android implementation needs to be reverse engineered again. It is likely just new endpoints.