Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Typescript Firebase功能:通过FCM发送的推送通知的客户端网络套接字断开连接错误_Typescript_Firebase_Google Cloud Functions_Firebase Cloud Messaging_Firebase Admin - Fatal编程技术网

Typescript Firebase功能:通过FCM发送的推送通知的客户端网络套接字断开连接错误

Typescript Firebase功能:通过FCM发送的推送通知的客户端网络套接字断开连接错误,typescript,firebase,google-cloud-functions,firebase-cloud-messaging,firebase-admin,Typescript,Firebase,Google Cloud Functions,Firebase Cloud Messaging,Firebase Admin,我正在使用firebase云功能向我的ionic应用程序发送推送通知。在早期,一切正常,但最近出现了一个新的错误,如下所示。它只是在函数执行过程中随机发生(在我看来),导致没有发送推送通知 我联系了Firebase支持部门,他们解释说这一定是我的防火墙的问题,因为它无法建立连接或其他什么,但代码是通过Firebase部署的,所以不是我的笔记本电脑在执行该功能,而是在云上执行谷歌云功能,所以如果这是问题,那一定是他们不明白,还是我错了 无论如何,下面是我通过命令“firebase deploy--

我正在使用firebase云功能向我的ionic应用程序发送推送通知。在早期,一切正常,但最近出现了一个新的错误,如下所示。它只是在函数执行过程中随机发生(在我看来),导致没有发送推送通知

我联系了Firebase支持部门,他们解释说这一定是我的防火墙的问题,因为它无法建立连接或其他什么,但代码是通过Firebase部署的,所以不是我的笔记本电脑在执行该功能,而是在云上执行谷歌云功能,所以如果这是问题,那一定是他们不明白,还是我错了

无论如何,下面是我通过命令“firebase deploy--only functions”部署的错误和代码,在部署过程中没有显示任何错误

代码:

其他一切都很好,甚至是之后我将通知推送到数据库的代码,因此我在数据库中获得了一个新条目,但手机上没有推送通知

错误:

{ Error: Error while making request: Client network socket disconnected before secure TLS connection was established. Error code: ECONNRESET
at FirebaseAppError.FirebaseError [as constructor] (/workspace/node_modules/firebase-admin/lib/utils/error.js:42:28)
at FirebaseAppError.PrefixedFirebaseError [as constructor] (/workspace/node_modules/firebase-admin/lib/utils/error.js:88:28)
at new FirebaseAppError (/workspace/node_modules/firebase-admin/lib/utils/error.js:123:28) 
at /workspace/node_modules/firebase-admin/lib/utils/api-request.js:209:19 
at process._tickCallback (internal/process/next_tick.js:68:7)
errorInfo: 
{ code: 'app/network-error',
message: 
'Error while making request: Client network socket disconnected before secure TLS connection was established. Error code: ECONNRESET' },
codePrefix: 'app' } 

非常感谢您的帮助,谢谢

您的代码无法正确处理承诺。每次调用返回承诺的异步API时,都需要在函数终止之前完全解析该承诺。如果您不等待承诺得到解决,那么异步工作完全可能永远不会完成,因为云函数将在代码完成之前终止代码。求你了


由于您的函数只是立即返回null,因此它不会等待任何工作完成。这包括对FCM的调用和数据库读取您必须重写此函数,使其返回一个新的承诺,该承诺只有在所有其他承诺都已解决后才能解决。

出于好奇,为什么要使用forEach循环调用“sendToDevice”,而这样的方法接受一个令牌数组。当你说随机错误时,我会责怪forEach循环轰炸方法;)谢谢你,道格!如果你能看看我上面的编辑,并提供更多的指导/帮助,那将是令人惊讶的。你太棒了!如果你有新的代码,通常会发布一个新的问题,这样就不会使原始问题的现有答案无效。好吧,当我在帖子中清楚地声明“编辑”以显示进度时,这是完全没有意义的。我认为,如果人们面临类似的问题,看到真正解决问题的最终结果是非常有用的。但我是新来的,所以删除了编辑,如果需要,我会发布一个新问题。将您的答案标记为已解决问题,并在代码按预期运行后亲自回答此问题。再次感谢道格!:)
admin.messaging().sendToDevice(device.val(), payload)
{ Error: Error while making request: Client network socket disconnected before secure TLS connection was established. Error code: ECONNRESET
at FirebaseAppError.FirebaseError [as constructor] (/workspace/node_modules/firebase-admin/lib/utils/error.js:42:28)
at FirebaseAppError.PrefixedFirebaseError [as constructor] (/workspace/node_modules/firebase-admin/lib/utils/error.js:88:28)
at new FirebaseAppError (/workspace/node_modules/firebase-admin/lib/utils/error.js:123:28) 
at /workspace/node_modules/firebase-admin/lib/utils/api-request.js:209:19 
at process._tickCallback (internal/process/next_tick.js:68:7)
errorInfo: 
{ code: 'app/network-error',
message: 
'Error while making request: Client network socket disconnected before secure TLS connection was established. Error code: ECONNRESET' },
codePrefix: 'app' }