How to use SignalR events to keep connection alive in the right way?

This method is for when you do not want to change the server configure ; javascript example code :

connection.serverTimeoutInMilliseconds = 1000 * 60 * 10; // for  10 minute

1. After I close server, on web-client the "Reconnect" event occurs and the "Disconnect" event occurs only after. Why?

SignalR cannot tell the difference between closing the server and restarting the server. For this reason, when the server shuts down the client will start to try to reconnect in case the server is actually restarting.

2. The "Disconnect" occurs 30+ seconds after of unknown "Reconnect". How to reduce this time?

This 30 second timeout can be modified via the DisconnectTimeout property.

3. I need the client to connect to the server on start. The "Reconnect" should occurs within fixed interval only. If "Reconnect" interval time is over the client should connect as new client.

You should start the connection on the disconnected event, preferably after a timeout to reduce server load if it restarts.

$.connection.hub.disconnected(function() {
    setTimeout(function() {
        $.connection.hub.start();
    }, 5000); // Re-start connection after 5 seconds
});

The entire Understanding and Handling Connection Lifetime Events in SignalR article is probably relavent to your question.