用net建立服务器:
net.createServer(function(socket) {
socket.on('data', function(chunk) {
//这里监听data事件,是指往res里写数据,然后发送给客户端么?
});
socket.pipe(socket);//第一个socket是req,第二个socket是res?
});
建立客户端:
var socket = net.connect();
socket.on('data', xxx);//这里的socket又是指什么意思?req?res?
socket.write('xxx');//这里的呢?是指向服务器发送数据?
有点混淆,求指教。。。
5 回复
(没用过 net 模块,有其他语言的经验,然后顺便看了眼文档)
不像 http 模块分成 req 和 res, net.Socket
即可读数据(data
事件)又可写数据(write
方法)。
socket 就好像一个双向管道,客户端写数据会被服务器读到,服务器写数据会被客户端读到。
你的代码看上去是实现了一个「回显」服务器,即把客户发来的数据原封不动地再发回客户端,所以有 socket.pipe(socket);
这句,即把 socket 收到的数据写回 socket.
socket 即是req又是res
socket.pipe(socket)
相当于
socket.on('data', socket.write.bind(socket))
相当于
socket.on('data', function (data) { socket.write(data) })
:-)