J'essaie d'envoyer des messages (tableaux d'octets) de Node.js à Java via un socket TCP (sérialisé avec protobuf).
Je crée un socket serveur du côté java, et je m'y connecte à partir de Node :
var client = net.createConnection(12345, "localhost")
client.addListener("connect", function(){
client.write(serializedMsg1)
client.end(serializedMsg2)
})
Du côté Java, je récupère le contenu du flux d'entrée et le désérialise :
Protocol1.parseFrom(inputStream);
Protocol2.parseFrom(inputStream);
Le problème est le suivant - il semble que seulement serializedMsg2
est transmis/désérialisé, tandis que serializedMsg1
est ignorée. D'après ce que je comprends, cela se produit parce que le flux d'octets n'est pas délimité et que la taille des morceaux de données doit être spécifiée explicitement. Les données ne doivent pas être lues directement à partir du flux côté Java - les morceaux délimités doivent être lus en premier, puis désérialisés sous forme de tableaux d'octets.