Впервые в 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-запрос, который включает заголовки в каждом запросе?