electron-push-receiver: 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!
About this issue
- Original URL
- State: open
- Created 3 years ago
- Reactions: 7
- Comments: 20
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.
Or, migrate to another service, such as Pushy or something.
@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.
Same with the javascript implementation, that requires the browser to support it:
Basically, the Android implementation needs to be reverse engineered again. It is likely just new endpoints.
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:
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 😃