firebase / firebase/firebase-admin-node

[Messaging] sendEachForMulticast with a lot of tokens throws error

Abierto
#2,943 1 comentario 0 reacciones 2 asignados Reclamado por @jonathanedey Ver en GitHub
api: messaging
Lenguaje dominante
TypeScript
Estrellas
1.7k
Forks
419
Merge medio
3 d 10 h
PR fusionados (30 d)
16

Descripción

### [READ] Step 1: Are you in the right place?

* For issues related to __the code in this repository__ file a Github issue.
* If the issue pertains to Cloud Firestore, read the instructions in the "Firestore issue"
template.
* For general technical questions, post a question on [StackOverflow](http://stackoverflow.com/)
with the firebase tag.
* For general Firebase discussion, use the [firebase-talk](https://groups.google.com/forum/#!forum/firebase-talk)
google group.
* For help troubleshooting your application that does not fall under one
of the above categories, reach out to the personalized
[Firebase support channel](https://firebase.google.com/support/).

### [REQUIRED] Step 2: Describe your environment

* Operating System version: Docker version 28.0.1, build 068a01e (image is: oven/bun:1.2.12-alpine)
* Firebase SDK version: 13.4.0
* Firebase Product: messaging
* Node.js version: v20.18.0
* NPM version: 10.8.2

### [REQUIRED] Step 3: Describe the problem

#### Steps to reproduce:

When using Http/2 with `sendEachForMulticast` will throw an error (`Error while making requests: GOAWAY - exceeded_max_concurrent_streams, Error code: 1`) when sending with a lot fcm tokens (lowest that i have tested that got rejected is 214)

if legacy http transport is enabled, this issue does not occur.

best guess why this happens is the fact that it sends a request for every token, therefore sending up to 500 requests at once which is too many for the http/2 implemenation of it.

#### Relevant Code:

```ts
const app = admin.initializeApp();
const messaging = app.messaging();

const tokens = []; // List of a lot of FCM tokens

try {
const result = await messaging.sendEachForMulticast({ tokens });
} catch (err) {
console.error(err);
}
```

Guía de contribución

Abrir la guía de contribución

Evaluación

Este issue todavía no se ha evaluado.

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.