【Node】TCP服务事件

140 阅读2分钟

image.png

采取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:当一定时间后连接不再活跃时,该事件将会被触发,通知用户当前该连接已经被闲置了。