2017-04-11 3 views
2

Ich habe Node.js WebSocket-Server und Unity-Client mit Best HTTP asset. Ich habe JSON-Daten übertragen, aber das Parsen kostet zu viel CPU-Ressourcen. Nun, ich versuche, byte [] Nachricht von C# zu senden, wie folgt:Wie kann ich binäre Daten zwischen Node.js WebSocket Server und C# Client austauschen?

//sending sample array - new float[] { 1.32, 3.12 } 
//convert an object to a byte array 
private byte[] ObjectToByteArray(Object obj) 
{ 
    if(obj == null) 
     return null; 

    BinaryFormatter bf = new BinaryFormatter(); 
    MemoryStream ms = new MemoryStream(); 
    bf.Serialize(ms, obj); 

    return ms.ToArray(); 
} 

Aber Server empfangen Uint8Array [1, 3] und Bruchteil verloren.

Hauptfrage: Wie analysiere ich Arrays (insbesondere verschachtelte Arrays) im Binärformat und codiere sie nach Array?

Antwort

0

können Sie versuchen, binäre json BSON http://bsonspec.org/implementations.html

oder MSGPACK http://msgpack.org/index.html

beide Bibliotheken Implementierung in verschiedenen Sprachen anbieten und auch getestet werden.

+0

Ich lese über BSON Parser in Node.js, es funktioniert viel langsamer als JSON. Ich muss die CPU-Last auf der Serverseite reduzieren, wenn ich Übertragungsdaten - das Hauptziel - kodiere/decodiere. –

+0

Wie kommt es, dass etwas, das beim Parsen/Schreiben schneller geschrieben wurde als json, aus Ihrer Sicht langsamer ist? Wenn die Daten, die Sie hin und her austauschen, groß oder verschachtelt sind, könnte dies das Problem sein. – Gntem

+0

JSON de/encoding wird dort wahrscheinlich in nativem Code in optimierter Weise direkt in der JS VM implementiert. Yeap, ich verlasse einige verschachtelte Arrays –

1

Die normale binäre Serialisierung kann ein Engpass für Web-APIs sein. Wenn Ihre Objekte gut definiert sind und in Klassen modelliert werden können, empfehle ich Ihnen, Protobuf zu verwenden.

Das Tolle ist, dass es plattformübergreifend ist und Sie die gleiche Definition sowohl für Ihren NodeJS-Server als auch für Ihren C# -Client verwenden können.

Verwandte Themen