2016-03-30 17 views
0

üzerinde socket.pipe() öğesini ne zaman kullanmalıyım? GPRS aygıtlarından gelen tcp bağlantılarını kullanan NodeJ'leri kullanıyorum.NodeJs net.socket

Sorum, socket.pipe (socket) 'ı net.createServer (...) kapsamında kullanmalı mıyım?

Bu boruyu() dubleks iletişimine izin veren bu biçimde mi çağırıyorsunuz, yani gprs-> node ve node-> gprs? Veya bu yöntemi çağırmaktan kaçınabilir miyim?

+0

Birinci bir akışı yönlendirmek istediğinizde

gprsSocket.on('data', function (data) { // echo the data back to the gprs gprsSocket.write(data); }) 

pipe() kullanılır (tam olarak aynı olmasa da) ve temelde böyle bir şey yapıyor '.pipe()' çalışmak. İkincisinin nerede olduğuna emin değilim. İkincisi: '.pipe()' ** her zaman ** bir yöndedir. Temel olarak içeriği okunabilir akıştan okur ve yazılabilir dosyaya yazar. – freakish

+0

Düğümle çok fazla deneyimim yok, bu yüzden bu örnekleri [socket.pipe (socket)] ve net.createServer() komut satırını koydum. Ama bu aramanın etkisini anlayamıyorum. Bana öyle geliyor ki, deney yoluyla, eğer bu [socket.pipe (socket)] 'ı yapmazsam, gprs cihazına geri yazmayı denediğim tüm veriler aslında çıktıya çıkmıyor. herşey. Geri yazma çalışmaz, yani [socket.write (...)]. Ben herhangi bir hata atar söylemiyorum, sadece veri kaybolur, linux fs üzerinde boş bir cihaza yazma gibi. –

cevap

0

Kodunuza paylaşmadığı, ancak genellikle konuşan pipe() tcp soket olarak iki yönlü iletişim ulaşmak için gerekli değildir doğası gereği iki yönlüdür.

net.createServer(function (gprsSocket) { 
    gprsSocket.on('data', function (data) { 
     // incoming data 
     // every time the GPRS is writing data - this event is emited 
    }) 

    // outgoing data 
    // call this whenever you want to send data to 
    // the GPRS regardless to incoming data 
    gprsSocket.write('hello\n') 
}) 

Sorunuzu yanıtlama - hayır gerekli değil. Aslında, socket.pipe(socket) numaralı telefonu arayarak geri gönderilen tüm veriler GPRS'e gönderilecektir. için 2 soket gerekir: Eğer tüm başka

// redirect all data to stdout 
gprsSocket.pipe(process.stdout)