4

期間web-push與GCM和鍍鉻的發展。我最近遇到了這個問題,由於在GCM或一些改變雲的停機時間(幾個小時前還一切工作正常)網絡推未知的問題,WebPushError「收到意外的響應代碼」 400

我不知道這是否會發生...任何信息將不勝感激。

我的代碼

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); 
}); 

跟蹤:

{ 
    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

如果你不想陷入低層次的細節,我建議你使用像[pushpad-node](https://github.com/pushpad/pushpad-node)這樣的服務 – collimarco

+0

你能告訴我們一個有效載荷的例子嗎? – Marco

+0

@collimarco你的建議對我來說似乎很有趣。但令人遺憾的是,需要爲該項目製作一個專用的推送模塊...第三項服務將立即被拒絕:( –

回答

1

@Lihn,貼在這裏你的有效載荷。從錯誤的消息看來,你似乎發送畸形的json消息。

您可以使用this service來檢查你的JSON語法問題。

GCM docs狀態,一個狀態碼400表示JSON消息無法解析。

+0

嗨!我的有效負載不是JSON。它可以是串化的JSON或簡單的字符串。就像這個''通知消息一樣''---正如在FireFox和Chrome上的問題中所提到的,直到最近Chrome瀏覽器上的GCM都被打破了。 ---仍然感謝您的時間和答案! :) –

+0

嘗試將標題設置爲'Content-type':'application/json'? – joarleymoraes

+0

已經做了''Content-type':'application/json'',我也試過沒有'payload','userPublicKey'和'userAuth',它們都沒有工作。 –

0

如果您嘗試使用網絡推發送推送通知,儘量使用再生運行#npm網絡推產生,拼着密鑰的公鑰和私鑰。通過替換這些鍵再次嘗試。祝你好運。

相關問題