采取net创建服务器
首先需要安装net以及telnet
npm init # 初始化
npm i net --save # 安装net包
npm i telnet --global # 安装telnet
创建一个本地服务器
const net=require("net")
const server=net.createServer(function(socket){
socket.on("data",function(data){
socket.write("hello")
});
socket.on("end",function(){
console.log("connection has disconnect");
});
socket.write("this is a node-server test")
})
server.listen(8421,function(){
console.log("server has bounded")
})
TCP服务事件
1.服务器事件对于通过net.createServer()创建的服务器而言,它是一个EventEmitter实例,它的自定义事件有如下几种。
- ❑ listening:在调用server.listen()绑定端口或者Domain Socket后触发,简洁写法server.listen(port, listeningListener),通过listen()方法的第二个参数传入。
- ❑ connection:每个客户端套接字连接到服务器端时触发,简洁写法为通过net.create-Server(),最后一个参数传递。
- ❑ close:当服务器关闭时触发,在调用server.close()后,服务器将停止接受新的套接字连接,但保持当前存在的连接,等待所有连接都断开后,会触发该事件。
- ❑ error:当服务器发生异常时,将会触发该事件。比如侦听一个使用中的端口,将会触发一个异常,如果不侦听error事件,服务器将会抛出异常。
2.连接事件服务器可以同时与多个客户端保持连接,对于每个连接而言是典型的可写可读Stream对象。Stream对象可以用于服务器端和客户端之间的通信,既可以通过data事件从一端读取另一端发来的数据,也可以通过write()方法从一端向另一端发送数据。它具有如下自定义事件。
- ❑ data:当一端调用write()发送数据时,另一端会触发data事件,事件传递的数据即是write()发送的数据。
- ❑ end:当连接中的任意一端发送了FIN数据时,将会触发该事件。
- ❑ connect:该事件用于客户端,当套接字与服务器端连接成功时会被触发。
- ❑ drain:当任意一端调用write()发送数据时,当前这端会触发该事件。
- ❑ error:当异常发生时,触发该事件。
- ❑ close:当套接字完全关闭时,触发该事件。
- ❑ timeout:当一定时间后连接不再活跃时,该事件将会被触发,通知用户当前该连接已经被闲置了。