Socket.io: Datenstrings wechseln über Socket

Erstellt am 30. Nov. 2017  ·  5Kommentare  ·  Quelle: socketio/socket.io

Hinweis : Für Support-Fragen verwenden Sie bitte einen dieser Kanäle: Stackoverflow oder Slack

Du möchtest:

  • [x] einen Fehler melden
  • [ ] Feature anfordern

Aktuelles Verhalten

Wenn ein Objekt als Daten ausgegeben wird und darin eine Zeichenfolge von (oder dem Unicode \u2265 ) verwendet wird, wird es in den Zeichenfolgenbuchstaben e und wird zu d

Schritte zum Reproduzieren (wenn das aktuelle Verhalten ein Fehler ist)

Kundenseite

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

Serverseite

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

Hinweis : Der beste Weg, um eine schnelle Antwort zu erhalten, besteht darin, einen fehlgeschlagenen Testfall bereitzustellen, indem Sie beispielsweise die folgende Geige forken.

Erwartetes Verhalten

dass die Daten durchgängig gleich bleiben

Aufstellen

  • Betriebssystem: Windows
  • Browser: Chrome 62
  • socket.io-Version: 1.7.2

Sonstige Informationen (z. B. Stacktraces, verwandte Probleme, Vorschläge zur Behebung)

Hilfreichster Kommentar

habe es mit 2.0.4 probiert, passiert immer noch...
mit dem Kodieren und Dekodieren der Daten mit diesem Code behoben:
Kundenseite

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

Serverseite

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

Alle 5 Kommentare

Dies geschieht nur, wenn der Socket nicht über xhr aktualisiert wurde (erste Verwendung).
Nach dem Upgrade auf Websocket werden alle Daten korrekt gesendet

siehe #451 und #572

Es gab ein Problem beim Parsen von utf8 in Version 1.x, könnten Sie es bitte mit Version 2.x versuchen?

Verwandt:

habe es mit 2.0.4 probiert, passiert immer noch...
mit dem Kodieren und Dekodieren der Daten mit diesem Code behoben:
Kundenseite

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

Serverseite

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

Ja das scheint zu funktionieren. Vielen Dank!

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen

Verwandte Themen

varHarrie picture varHarrie  ·  3Kommentare

thebinarypenguin picture thebinarypenguin  ·  4Kommentare

jloa picture jloa  ·  4Kommentare

adammw picture adammw  ·  4Kommentare

doughsay picture doughsay  ·  4Kommentare