注:サポートに関する質問については、 stackoverflowまたはslackのいずれかのチャネルを使用してください
オブジェクトをデータとして出力し、その中で≥
(またはユニコード\u2265
)の文字列を使用すると、オブジェクトは文字列e
および≤
に変わります。 d
変わります
クライアント側
channel.emit('data', {data:'≥'});
サーバ側
socket.on('data',({data:bla})=>{
console.log(bla); // prints 'e'
});
注:迅速な回答を得るための最良の方法は、失敗したテストケースを提供することです。たとえば、次のフィドルをフォークします。
データが一貫して同じままであること
これは、ソケットがxhrを介してアップグレードされていない(最初の使用)場合にのみ発生します。
WebSocketにアップグレードした後、すべてのデータが正しく送信されます
#451および#572を参照
バージョン1.xでのutf8解析に関する問題がありましたが、バージョン2.xで試してみてください。
関連している:
2.0.4で試してみましたが、それでも発生します...
このコードでデータをエンコードおよびデコードすることで修正しました:
クライアント側
function strencode( data ) {
return encodeURIComponent( escape( JSON.stringify( data ) ) );
}
サーバ側
function strdecode( data ) {
return JSON.parse( unescape( decodeURIComponent( data ) ) );
}
ええ、それは機能しているようです。 ありがとう!
最も参考になるコメント
2.0.4で試してみましたが、それでも発生します...
このコードでデータをエンコードおよびデコードすることで修正しました:
クライアント側
サーバ側