4

Während der Entwicklung web-push mit GCM und Chrom. Ich habe dieses Problem vor kurzem (vor ein paar Stunden alles funktioniert immer noch gut)web-push unbekanntes Problem, WebPushError "unerwarteten Antwortcode erhalten" 400

Ich bin nicht sicher, ob dies aufgrund einiger Änderungen bei GCM oder eine Ausfallzeit der Cloud passieren ... Alle Informationen werden geschätzt.

Mein Code

var payload = JSON.stringify({ 
    title: 'notification title', 
    body: 'message body' 
}); 
webPush.sendNotification(params.endpoint, { 
    userPublicKey: params.userPublicKey, 
    userAuth: params.userAuth, 
    payload: payload 
}).then(function (res) { 
    // console.log of stuff 
}) 
.catch(function(error){ 
    console.log(error); 
    process.exit(1); 
}); 

Trace:

{ 
    WebPushError: Received unexpected response code 
    at IncomingMessage.<anonymous> (/var/www/***/pwa/node_modules/web-push /index.js:264:20) 
    at emitNone (events.js:91:20) 
    at IncomingMessage.emit (events.js:185:7) 
    at endReadableNT (_stream_readable.js:926:12) 
    at _combinedTickCallback (internal/process/next_tick.js:74:11) 
    at process._tickCallback (internal/process/next_tick.js:98:9) 
    name: 'WebPushError', 
    message: 'Received unexpected response code', 
    statusCode: 400, 
    headers: { 
    'content-type': 'text/plain; charset=UTF-8', 
    date: 'Wed, 04 May 2016 11:35:13 GMT', 
    expires: 'Wed, 04 May 2016 11:35:13 GMT', 
    'cache-control': 'private, max-age=0', 
    'x-content-type-options': 'nosniff', 
    'x-frame-options': 'SAMEORIGIN', 
    'x-xss-protection': '1; mode=block', 
    server: 'GSE', 
    'alternate-protocol': '443:quic', 
    'alt-svc': 'quic=":443"; ma=2592000; v="33,32,31,30,29,28,27,26,25"', 
    'accept-ranges': 'none', 
    vary: 'Accept-Encoding', 
    connection: 'close' 
    }, 
    body: 'JSON_PARSING_ERROR: Unexpected token END OF FILE at position 467.\n' 
} 
+0

Ich empfehle die Verwendung von Diensten wie [Pushpad-Knoten] (https://github.com/pushpad/pushpad-node), wenn Sie nicht mit Low-Level-Details stören möchten – collimarco

+0

Können Sie uns ein Beispiel für Ihre Nutzlast zeigen ? – Marco

+0

@collimarco Ihr Vorschlag scheint mir sehr interessant. Aber leider ist die Anforderung ein dediziertes Push-Modul für das Projekt zu machen ... Der dritte Dienst wird sofort verweigert :( –

Antwort

1

@Lihn, fügen Sie hier Ihre Nutzlast. Bei einem Fehler der Nachricht scheint es, als ob Sie eine fehlerhafte JSON-Nachricht senden.

Sie können this service verwenden, um nach Syntaxproblemen in Ihrem JSON zu suchen.

Die GCM docs besagt, dass ein Statuscode 400 bedeutet, dass die JSON-Nachricht nicht analysiert werden konnte.

+0

Hallo! Meine Nutzlast ist kein JSON. Es ist entweder ein stringed JSON oder einfach eine Zeichenfolge. So etwas wie diese "Benachrichtigungsmeldung" --- --- Wie in der Frage zu FireFox und Chrome erwähnt, funktionierte alles gut, bis es vor kurzem für GCM in Chrome gebrochen wurde. --- Vielen Dank für Ihre Zeit und die Antwort! :) –

+0

Versuchen Sie, die Kopfzeilen auf 'Inhaltstyp' zu setzen: 'application/json'? – joarleymoraes

+0

Habe schon '' Content-type ':' application/json'', auch ich habe es ohne 'payload', 'userPublicKey' und 'userAuth' versucht, keiner von ihnen funktioniert. –

0

Wenn Sie versuchen, Push-Benachrichtigungen über Web-Push zu senden, versuchen Sie, den öffentlichen und privaten Schlüssel mithilfe von #npm run web-push generate-vapid-keys neu zu generieren. Versuchen Sie es erneut, indem Sie diese Schlüssel ersetzen. Viel Glück.

Verwandte Themen