Socket.io-client: A desconexão v3 do soquete parece fechar a conexão subjacente.

Criado em 16 nov. 2020  ·  4Comentários  ·  Fonte: socketio/socket.io-client

Você quer:

  • [x] relatar um bug
  • [] solicitar um recurso

Comportamento atual

Depois de atualizar para a v3, quando chamo socket.disconnect() em qualquer um dos lados do cliente ou servidor, parece que a conexão subjacente do gerenciador também está sendo fechada - todos os outros soquetes usando o mesmo gerenciador / conexão subjacente também são desconectados.

Não sei onde apresentar este problema. Talvez tenha raiz em engine.io v4?

Aqui está um diff do meu projeto durante a atualização . Peço desculpas por conter algumas alterações não relacionadas também. A principal coisa que quero destacar é que não fiz nenhuma alteração em como configuro e gerencio as conexões (você pode cmd + F para "desconectar", "fechar", "io.socket").

Etapas para reproduzir (se o comportamento atual for um bug)

Por favor, veja este jsfiddle .

Comportamento esperado

O comportamento da v2 é que chamar socket.close() no lado do cliente e no lado do servidor só deve fechar esse soquete quando um gerenciador tiver vários namespaces - não deve fechar todos os soquetes multiplexados sob o manjedoura desse soquete.

Configurar

  • SO: Windows 10
  • navegador: Chrome 86.0
  • versão socket.io: 3.0.0

Observe a diferença de comportamento ao usar socket.io v2.

Outras informações (por exemplo, rastreamentos de pilha, problemas relacionados, sugestões de como corrigir)

Todos 4 comentários

Passei muito tempo depurando meu próprio código pensando que quebrei algo: ')

Ansioso pela correção! E obrigado novamente por seu trabalho árduo para iniciar a v3.

O evento de "conexão" nunca é disparado na conexão de soquete e não preenche o array connecting no gerenciador:
https://github.com/socketio/socket.io-client/blame/master/lib/manager.ts#L599

Quando _destroy é chamado if (this.connecting.length) return; this._close(); sempre fecha a conexão.

Não vejo um problema no código do cliente. No código do servidor não consegui encontrar nenhum evento chamado "Connecting".

Aqui está o commit que remove a emissão de "conexão".

https://github.com/socketio/socket.io-client/commit/b60e909039d4bbb979d32ec86ac16c5398526b44#diff -f0e64910289a49966c99ceadaa5637404e3439ec0812a4bdb7003fe1e5a33d1c

@darrachequesne Você poderia verificar este problema.

@ david-fong eu realmente poderia reproduzir o problema, muito obrigado pelas etapas detalhadas: +1:

Isso deve ser corrigido por https://github.com/socketio/socket.io-client/commit/f8f60fc860f51aa6465fc32dd9275a8e1d22f05d (incluído em [email protected] ).

Mais uma vez, obrigado pelo relatório detalhado, isso realmente ajuda!

Esta página foi útil?
0 / 5 - 0 avaliações