What's the difference between reconnectionAttempts and pingTimeout?

I know reconnectionAttempts is used for client side and pingTimeout in socket io but I quite can't understand their use. Does pingTimeout mean that socket server will disconnect (I experimented, but it didn't) from client side?

I want to know about these two because one behaviour is solving my problem but I can't understand how it is happening. I think it may be related to above two options.

Behaviour: Whenever I close the socket on client side and then emit some event to server, it doesn't work, but after connecting it again, it fires just like it was waiting for the connection.

Does it mean if connection is not available, it will queue all pending events? (I observed this thing on client side, but not on server side. Is it true for server side too?)