2015-04-09 20 views
9

Próbuję przetestować mój kod serwera (nie-http, niestandardowy protokół). Muszę utworzyć fałszywe gniazdo dupleksu, na które mogę wysyłać wiadomości asynchronicznie i odbierać wiadomości od.NodeJS: Jak utworzyć fałszywe gniazdo tcp do testowania serwerów

Osiągnąłem pewien marginalny sukces, tworząc strumień dupleksowy ze strumienia zdarzeń readArray i writeArray, ale readArray wymaga danych z góry, a writeArray nie uruchamia się, dopóki nie zakończy się strumień. Muszę przetestować z biegiem czasu. Idealnym rozwiązaniem byłyby dwa połączone ze sobą podwójne gniazda dupleksowe.

Czy istnieją jakieś istniejące rozwiązania w tym zakresie? Wolałbym nie uciekać się do inicjowania rzeczywistego serwera, żeby to przetestować.

+0

[węzeł-mitm] (https://github.com/moll/node-mitm) może ci pomóc. –

+0

node-mitm służy do przechwytywania wysyłanych żądań. Próbuję zasymulować przychodzące żądanie. – ChiperSoft

Odpowiedz

1

Node Mitm może to zrobić dobrze. Może przechwytywać i kpić nie tylko z protokołu HTTP, ale także z dowolnego połączenia TCP.

mitm.on("connection", function(socket) { socket.write("Hello back!") }) 

var socket = Net.connect(22, "example.org") 
socket.write("Hello!") 
socket.setEncoding("utf8") 
socket.read() // => "Hello back!" 
+0

Nie próbuję przechwycić połączenia przychodzącego, nie próbuję niczego przechwycić. Chcę utworzyć fałszywe połączenie TCP, aby przejść do mojej procedury obsługi połączenia (funkcja, którą udostępniasz do net.createServer) i innych funkcji, które mogę następnie przekazać w sprawdzalny sposób bez konieczności uruchamiania rzeczywistego serwera. – ChiperSoft

+0

Następnie możesz rzucić okiem na to: [https://gist.github.com/FGRibreau/7284395](https://gist.github.com/FGRibreau/7284395) –

+0

Tak, znalazłem to w moim badawczy. To nie jest fajne, co sprawia, że ​​nie nadaje się do użytku z moim przypadkiem testowym. Potrzebuję działającego strumienia, a nie tylko emulacji jednego, i nie wiem wystarczająco dużo o strumieniach, żeby zrobić to, czego potrzebuję. Naprawdę chcę tylko dwóch strumieni dupleksowych, które są ze sobą połączone, ale nie mogę wymyślić, jak wykonać tę pracę. – ChiperSoft

Powiązane problemy