2015-04-09 12 views
9

Tôi đang cố gắng để đơn vị kiểm tra mã của tôi máy chủ (không phải http, giao thức tùy chỉnh). Tôi cần phải tạo một ổ cắm giả song công mà tôi có thể gửi tin nhắn đến không đồng bộ và nhận tin nhắn từ đó.NodeJS: Làm thế nào tôi có thể tạo ra một ổ cắm tcp giả cho các máy chủ thử nghiệm

Tôi đã có một số thành công cận biên tạo luồng kép từ readArray sự kiện và writeArray, nhưng readArray yêu cầu phải có dữ liệu phía trước và writeArray không kích hoạt cho đến khi luồng kết thúc. Tôi cần phải kiểm tra theo thời gian. Một giải pháp lý tưởng sẽ là hai ổ cắm song công liên kết với nhau.

Có bất kỳ giải pháp hiện có cho việc này? Tôi không muốn phải nghỉ mát để khởi tạo một máy chủ thực tế để kiểm tra điều này.

+0

[node-mitm] (https://github.com/moll/node-mitm) có thể giúp bạn. –

+0

nút-mitm là để chụp các yêu cầu gửi đi. Tôi đang cố gắng mô phỏng một yêu cầu đến. – ChiperSoft

Trả lời

1

Node Mitm thực sự có thể làm điều đó tốt. Nó có thể ngăn chặn và giả lập không chỉ HTTP mà còn bất kỳ kết nối TCP nào.

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

Tôi không cố gắng ngăn chặn một kết nối đến, tôi không cố gắng ngăn chặn bất cứ điều gì cả. Tôi muốn tạo một kết nối tcp giả để truyền vào trình xử lý kết nối của tôi (chức năng mà bạn cung cấp cho net.createServer) và các chức năng khác, sau đó tôi có thể giao tiếp một cách có thể kiểm tra mà không cần phải thực hiện một máy chủ thực. – ChiperSoft

+0

Sau đó, bạn có thể muốn có một cái nhìn lúc này: [https://gist.github.com/FGRibreau/7284395](https://gist.github.com/FGRibreau/7284395) –

+0

Vâng, tôi phát hiện ra rằng trong tôi đang tìm kiếm. Nó không phải là ống có thể, mà làm cho nó không sử dụng được với trường hợp thử nghiệm của tôi. Tôi cần một luồng công việc, không chỉ là một mô phỏng, và tôi không biết đủ về luồng api để làm cho nó làm những gì tôi cần. Những gì tôi thực sự muốn chỉ là hai luồng song công được kết nối với nhau, nhưng tôi không thể tìm ra cách để thực hiện công việc đó. – ChiperSoft

Các vấn đề liên quan