Socket.io: strings de dados mudam no soquete

Criado em 30 nov. 2017  ·  5Comentários  ·  Fonte: socketio/socket.io

Observação : para perguntas de suporte, use um destes canais: stackoverflow ou slack

Você quer:

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

Comportamento atual

ao emitir um objeto como dados e dentro dele usando uma string de (ou o unicode \u2265 ) transforma-o na letra da string e e retorna para d

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

lado do cliente

channel.emit('data', {data:'≥'});

lado do servidor

socket.on('data',({data:bla})=>{
console.log(bla); // prints 'e'
});

Nota : a melhor maneira de obter uma resposta rápida é fornecer um caso de teste com falha, bifurcando o seguinte violino, por exemplo.

Comportamento esperado

que os dados permanecerão os mesmos de forma consistente

Configurar

  • SO: Windows
  • navegador: Chrome 62
  • versão socket.io: 1.7.2

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

Comentários muito úteis

tentei com 2.0.4, ainda acontece ...
corrigido com a codificação e decodificação dos dados com este código:
lado do cliente

function strencode( data ) {
    return encodeURIComponent( escape( JSON.stringify( data ) ) );
}

lado do servidor

function strdecode( data ) {
    return JSON.parse( unescape( decodeURIComponent( data ) ) );
}

Todos 5 comentários

Isso acontece apenas quando o soquete não foi atualizado (primeiro uso) sobre xhr,
depois de atualizar para websocket todos os dados são enviados corretamente

consulte # 451 e # 572

Houve um problema com relação à análise utf8 na versão 1.x, você poderia tentar com a versão 2.x?

Relacionado:

tentei com 2.0.4, ainda acontece ...
corrigido com a codificação e decodificação dos dados com este código:
lado do cliente

function strencode( data ) {
    return encodeURIComponent( escape( JSON.stringify( data ) ) );
}

lado do servidor

function strdecode( data ) {
    return JSON.parse( unescape( decodeURIComponent( data ) ) );
}

Sim, parece estar funcionando. Obrigado!

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

Questões relacionadas

Elliot9 picture Elliot9  ·  4Comentários

MyMomSaysIAmSpecial picture MyMomSaysIAmSpecial  ·  4Comentários

shashuec picture shashuec  ·  4Comentários

kootoopas picture kootoopas  ·  4Comentários

chfeizy picture chfeizy  ·  3Comentários