Соединение Socket IO все еще отправляет заголовки даже после начального рукопожатия? - PullRequest
0 голосов
/ 28 марта 2019

Впервые в WebSockets и Socket.io, но следует помнить, что одна из причин, по которой веб-сокеты намного быстрее, чем HTTP-запросы, заключается в том, что Once established, a websocket connection does not have to send headers with its messages, и, следовательно, имеют меньше накладных расходов при каждой передаче данных. Поэтому в socket.io на сервере Node.js я попытался:

...

io.on('connection', (socket) => {
    console.log('initial', socket.id, socket.handshake.headers.cookie);

    socket.on('test', async (resHandler) => {
        console.log("socket test", socket.handshake.headers.cookie);

        let result = await dbFun.test(pool);
        console.log(result);
        resHandler(result);
    });
})

...

На клиенте я установил соединение с этим сокетом / сервером и отправил событие 'test'. Я ожидал увидеть заголовки cookie сокетов в «начальном» журнале, но был удивлен, увидев их в журнале «test test», когда генерировалось событие «test». Означает ли это, что, когда клиентский сокет испускает событие «test», сокет все еще включает данные заголовка с каждым последующим событием, даже после того, как начальное рукопожатие и соединение сокета были установлены? Если да, то чем это отличается / быстрее, чем HTTP-запрос, который включает заголовки в каждом запросе?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...