如何在node.js中创build一个简单的套接字?

我试图创build一个虚拟套接字用于我的一些testing

var net = require("net"); var s = new net.Socket(); s.on("data", function(data) { console.log("data received:", data); }); s.write("hello!"); 

得到这个错误

错误:此套接字已closures。

我也试着创build套接字

 var s = new net.Socket({allowHalfOpen: true}); 

我究竟做错了什么?


作为参考,完整的testing看起来像这样

 it("should say hello on connect", function(done) { var socket = new net.Socket(); var client = Client.createClient({socket: socket}); socket.on("data", function(data){ assert.equal("hello", data); done(); }); client.connect(); // writes "hello" to the socket }); 

我不认为服务器处于监听状态。 这是我用的..

 // server require('net').createServer(function (socket) { console.log("connected"); socket.on('data', function (data) { console.log(data.toString()); }); }) .listen(8080); // client var s = require('net').Socket(); s.connect(8080); s.write('Hello'); s.end(); 

仅限客户

 var s = require('net').Socket(); s.connect(80, 'google.com'); s.write('GET http://www.google.com/ HTTP/1.1\n\n'); s.on('data', function(d){ console.log(d.toString()); }); s.end(); 

尝试这个。

生产代码app.js

 var net = require("net"); function createSocket(socket){ var s = socket || new net.Socket(); s.write("hello!"); } exports.createSocket = createSocket; 

testing代码: test.js :(摩卡)

 var sinon = require('sinon'), assert = require('assert'), net = require('net'), prod_code=require('./app.js') describe('Example Stubbing net.Socket', function () { it("should say hello on connect", function (done) { var socket = new net.Socket(); var stub = sinon.stub(socket, 'write', function (data, encoding, cb) { console.log(data); assert.equal("hello!", data); done(); }); stub.on = socket.on; prod_code.createSocket(socket); }); }); 

在写入之前,您需要连接您的套接字:

 var PORT = 41443; var net = require("net"); var s = new net.Socket(); s.on("data", function(data) { console.log("data received:", data); }); s.connect(PORT, function(){ s.write("hello!"); });