2017-06-19 2 views
0

J'essaye d'envoyer un paquet udp en utilisant le paquet node.js dgram depuis une application électronique. La méthode send appelle un tampon, Uint8Array ou une chaîne. Je reçois une erreur de type lorsque j'essaie d'utiliser un tampon ou UintArray cependant. L'erreur exacte est: TypeError: le premier argument doit être un tampon ou une chaîne.Envoi de paquets UDP dans Electron via Node.js datagramme

Je peux voir dans le code dgram Node.js qu'il vérifie un tampon en utilisant !(buffer instanceof Buffer. Si j'essaie d'utiliser instanceof sur le buffer de mon code, il renvoie simplement object comme type, tandis que si j'essaie Buffer.isBuffer(), il renvoie true. J'ai essayé toutes les méthodes que le noeud fournit pour créer des tampons buffer sans résultat. Envoyer accepte les chaînes, mais je suis confronté à toutes sortes de problèmes avec l'encodage, et cela me semble un peu hacky.

On dirait que l'électron exécute le nœud 7.4.0.

Je vois mes options d'ici:

  1. Modifier le code Node.js
  2. outrepasser D'une certaine façon ce que instanceof retours pour mon objet tampon
  3. trouver une solution pour coder correctement le tampon comme chaîne.

Des idées?

+0

Avez-vous utilisé 'Buffer.isBuffer()', comme la classe 'Buffer' ou sur votre instance actuelle? Avez-vous également essayé d'utiliser 'Buffer.from()' pour créer votre tampon? – RoyalBingBong

+0

J'ai essayé d'utiliser Buffer.from et new Buffer(). Aussi je me suis trompé, si j'essaie instanceof Buffer sur mon tampon, il retourne vrai. Je pense que le problème peut être avec le module Node dgram s'appuyant sur une version différente de Buffer. Y at-il de toute façon je peux changer le code de noeud avec la recompilation? –

Répondre

1

Pour obtenir cela je travaille juste eu à pointer ma valeur globale de tampon au module tampon de noeud comme si: const Buffer = window.require('buffer').Buffer