MatthieuLemoine / push-receiver

A library to subscribe to GCM/FCM and receive notifications within a node process.
https://medium.com/@MatthieuLemoine/my-journey-to-bring-web-push-support-to-node-and-electron-ce70eea1c0b0
MIT License
198 stars 75 forks source link

RangeError: index out of range: in the first message #9

Closed dannynash closed 6 years ago

dannynash commented 6 years ago

Hi, thanks for the great library.

I found that my program got exception message in two cases.

After register and token

As soon as listen the socket, I got exception in onMessageReceived in file /src/client/socket/index.js.

RangeError: index out of range: 1 + 10 > 1
    at indexOutOfRange (/Users/dannynash/workspace/projects/ADE/cloudMessageClient/node_modules/protobufjs/src/reader.js:13:12)
    at BufferReader.read_uint32 [as uint32] (/Users/dannynash/workspace/projects/ADE/cloudMessageClient/node_modules/protobufjs/src/reader.js:94:19)
    at BufferReader.read_string_buffer [as string] (/Users/dannynash/workspace/projects/ADE/cloudMessageClient/node_modules/protobufjs/src/reader_buffer.js:35:20)
    at Type.DataMessageStanza$decode [as decode] (eval at Codegen (/Users/dannynash/workspace/projects/ADE/cloudMessageClient/node_modules/@protobufjs/codegen/index.js:50:33), <anonymous>:20:16)
    at Type.decode_setup [as decode] (/Users/dannynash/workspace/projects/ADE/cloudMessageClient/node_modules/protobufjs/src/type.js:502:25)
    at onMessageReceived (/Users/dannynash/workspace/projects/ADE/cloudMessageClient/node_modules/push-receiver/src/client/socket/index.js:100:26)
    at TLSSocket.socket.on.buffer (/Users/dannynash/workspace/projects/ADE/cloudMessageClient/node_modules/push-receiver/src/client/socket/index.js:86:5)
    at emitOne (events.js:116:13)
    at TLSSocket.emit (events.js:211:7)
    at addChunk (_stream_readable.js:263:12)
    at readableAddChunk (_stream_readable.js:250:11)
    at TLSSocket.Readable.push (_stream_readable.js:208:10)
    at TLSWrap.onread (net.js:594:20)
Error: invalid wire type 6 at offset 2
    at BufferReader.Reader.skipType (/Users/dannynash/workspace/projects/ADE/cloudMessageClient/node_modules/protobufjs/src/reader.js:375:19)
    at BufferReader.Reader.skipType (/Users/dannynash/workspace/projects/ADE/cloudMessageClient/node_modules/protobufjs/src/reader.js:366:22)
    at Type.DataMessageStanza$decode [as decode] (eval at Codegen (/Users/dannynash/workspace/projects/ADE/cloudMessageClient/node_modules/@protobufjs/codegen/index.js:50:33), <anonymous>:67:5)
    at onMessageReceived (/Users/dannynash/workspace/projects/ADE/cloudMessageClient/node_modules/push-receiver/src/client/socket/index.js:100:26)
    at TLSSocket.socket.on.buffer (/Users/dannynash/workspace/projects/ADE/cloudMessageClient/node_modules/push-receiver/src/client/socket/index.js:86:5)
    at emitOne (events.js:116:13)
    at TLSSocket.emit (events.js:211:7)
    at addChunk (_stream_readable.js:263:12)
    at readableAddChunk (_stream_readable.js:250:11)
    at TLSSocket.Readable.push (_stream_readable.js:208:10)
    at TLSWrap.onread (net.js:594:20)
Error: invalid wire type 7 at offset 1
    at BufferReader.Reader.skipType (/Users/dannynash/workspace/projects/ADE/cloudMessageClient/node_modules/protobufjs/src/reader.js:375:19)
    at Type.DataMessageStanza$decode [as decode] (eval at Codegen (/Users/dannynash/workspace/projects/ADE/cloudMessageClient/node_modules/@protobufjs/codegen/index.js:50:33), <anonymous>:67:5)
    at onMessageReceived (/Users/dannynash/workspace/projects/ADE/cloudMessageClient/node_modules/push-receiver/src/client/socket/index.js:100:26)
    at TLSSocket.socket.on.buffer (/Users/dannynash/workspace/projects/ADE/cloudMessageClient/node_modules/push-receiver/src/client/socket/index.js:86:5)
    at emitOne (events.js:116:13)
    at TLSSocket.emit (events.js:211:7)
    at addChunk (_stream_readable.js:263:12)
    at readableAddChunk (_stream_readable.js:250:11)
    at TLSSocket.Readable.push (_stream_readable.js:208:10)
    at TLSWrap.onread (net.js:594:20)

Server send first message

Same exception in same function, but it works in following message.

RangeError: index out of range: 419 + 211 > 514
    at indexOutOfRange (/Users/dannynash/workspace/projects/ADE/cloudMessageClient/node_modules/protobufjs/src/reader.js:13:12)
    at BufferReader.read_bytes [as bytes] (/Users/dannynash/workspace/projects/ADE/cloudMessageClient/node_modules/protobufjs/src/reader.js:306:15)
    at Type.DataMessageStanza$decode [as decode] (eval at Codegen (/Users/dannynash/workspace/projects/ADE/cloudMessageClient/node_modules/@protobufjs/codegen/index.js:50:33), <anonymous>:61:15)
    at onMessageReceived (/Users/dannynash/workspace/projects/ADE/cloudMessageClient/node_modules/push-receiver/src/client/socket/index.js:100:26)
    at TLSSocket.socket.on.buffer (/Users/dannynash/workspace/projects/ADE/cloudMessageClient/node_modules/push-receiver/src/client/socket/index.js:86:5)
    at emitOne (events.js:116:13)
    at TLSSocket.emit (events.js:211:7)
    at addChunk (_stream_readable.js:263:12)
    at readableAddChunk (_stream_readable.js:250:11)
    at TLSSocket.Readable.push (_stream_readable.js:208:10)
    at TLSWrap.onread (net.js:594:20)
Error: invalid wire type 6 at offset 34
    at BufferReader.Reader.skipType (/Users/dannynash/workspace/projects/ADE/cloudMessageClient/node_modules/protobufjs/src/reader.js:375:19)
    at BufferReader.Reader.skipType (/Users/dannynash/workspace/projects/ADE/cloudMessageClient/node_modules/protobufjs/src/reader.js:366:22)
    at BufferReader.Reader.skipType (/Users/dannynash/workspace/projects/ADE/cloudMessageClient/node_modules/protobufjs/src/reader.js:366:22)
    at BufferReader.Reader.skipType (/Users/dannynash/workspace/projects/ADE/cloudMessageClient/node_modules/protobufjs/src/reader.js:366:22)
    at BufferReader.Reader.skipType (/Users/dannynash/workspace/projects/ADE/cloudMessageClient/node_modules/protobufjs/src/reader.js:366:22)
    at Type.DataMessageStanza$decode [as decode] (eval at Codegen (/Users/dannynash/workspace/projects/ADE/cloudMessageClient/node_modules/@protobufjs/codegen/index.js:50:33), <anonymous>:67:5)
    at onMessageReceived (/Users/dannynash/workspace/projects/ADE/cloudMessageClient/node_modules/push-receiver/src/client/socket/index.js:100:26)
    at TLSSocket.socket.on.buffer (/Users/dannynash/workspace/projects/ADE/cloudMessageClient/node_modules/push-receiver/src/client/socket/index.js:86:5)
    at emitOne (events.js:116:13)
    at TLSSocket.emit (events.js:211:7)
    at addChunk (_stream_readable.js:263:12)
    at readableAddChunk (_stream_readable.js:250:11)
    at TLSSocket.Readable.push (_stream_readable.js:208:10)
    at TLSWrap.onread (net.js:594:20)
MatthieuLemoine commented 6 years ago

Is it preventing you to receive push notifications ?

MatthieuLemoine commented 6 years ago

You may receive messages from Google servers that aren't push notifications. They are not handled by this library yet.

All messages are interpreted as notifications and as such it always tries to convert the incoming message to a notification. If it fails, the above error messages are shown so that you know that you received another kind of messages but it has no effect on your ability to receive notifications.

dannynash commented 6 years ago

OK, got it.

Maybe the first notification was packaged in other type, did it happened with you before?

I will read fcm or gcm document to check it out. Thanks again!

MatthieuLemoine commented 6 years ago

Yes as long it's not preventing you to receive notifications, you're good to go.

You won't find it in the FCM/GCM documentation. The API used in this library is undocumented.

ibash commented 6 years ago

I think this is a bug actually - going to create an issue with an explanation.