Иногда я обнаруживал, что мое серверное соединение socket.io (2.1) получило событие подключения, потому что я вижу журнал, а на его стороне клиента я не видел его. И из панели сети Chrome я вижу, что клиентская сторона продолжает отправлять запрос на опрос (потому что произошел сбой websocket) и получил 200 в порядке.
Так как же сервер может получить событие подключения, пока клиент его не отправил? Как мне отладить проблему
//server-side
io.on('connection', function (socket) {
logger.debug('a user connected ' + socket.id);
...
//client-side
socket.on('connect', () => {
console.log("socket connect")
...
//from network pane
request URL: http://localhost:5000/socket.io/?EIO=3&transport=polling&t=MCunKN5&sid=SmOL7JbUlSqw6MwZAAAL
Request Method: POST
На стороне клиента я использовал webpack-dev-server для делегирования моего экспресс-сервера.
---- обновление ------
Я обнаружил, что webpack-dev-serve использует socketjs , а не socket.io. Не уверен, что это могло быть причиной. Это журнал, который я получил на стороне сервера:
GET /cs/refresh 200 - - 37.947 ms
socket.io:server incoming connection with id tTOIQou49WeZ-l92AAAL
socket.io:client connecting to namespace /
socket.io:namespace adding socket to nsp /
socket.io:socket socket connected - writing packet
socket.io:socket joining room tTOIQou49WeZ-l92AAAL
socket.io:socket packet already sent in initial handshake
socket.io:socket joined room tTOIQou49WeZ-l92AAAL
socket.io-parser decoded 0/5975b17697e60c5d2403a202, as {"type":0,"nsp":"/5975b17697e60c5d2403a202"}
socket.io:client connecting to namespace /5975b17697e60c5d2403a202
socket.io:namespace adding socket to nsp /5975b17697e60c5d2403a202
socket.io:socket socket connected - writing packet
socket.io:socket joining room /5975b17697e60c5d2403a202#tTOIQou49WeZ-l92AAAL
socket.io:client writing packet {"type":0,"nsp":"/5975b17697e60c5d2403a202"}
socket.io-parser encoding packet {"type":0,"nsp":"/5975b17697e60c5d2403a202"}
socket.io-parser encoded {"type":0,"nsp":"/5975b17697e60c5d2403a202"} as 0/5975b17697e60c5d2403a202,
- debug: a user connected /5975b17697e60c5d2403a202#tTOIQou49WeZ-l92AAAL
socket.io:socket joined room /5975b17697e60c5d2403a202#tTOIQou49WeZ-l92AAAL
На стороне клиента