推荐答案
-- -------------------- ---- ------- ----- --- - --------------- -- --------- ----- ------ - ------------------------- -- - ---------------------- -- ---------- ----------------- ------ -- - ----- ------- - ----------------------- ------------------ ------------- -- ------------- --------------------------- ------ -- - -- ----- ----- ---- ------------------- ----------- ------------------------ -------- -------- --- --- -- --------- ---------------- -- -- - ------------------------ --- -- ---- ------------------ ----- -- - -------------------- ----------------- --- --- -- ------ ---------------------- --------- ------------- -- - --------------------------- ------ -- - -- ----- ----- ---- ----------------------------------- -- - -- ------- --- ------------- - ----------------------------- - --- --- --- -- --------- ------------------- -- -- - ------------------------ ------- ---
本题详细解读
1. 使用 net
模块创建服务器
net
模块是 Node.js 提供的一个用于创建 TCP 服务器的核心模块。通过 net.createServer()
方法可以创建一个 TCP 服务器实例。服务器实例会监听指定的端口,等待客户端连接。
2. 处理客户端连接
当客户端连接到服务器时,createServer
的回调函数会被触发,传入一个 socket
对象。socket
对象代表与客户端的连接,可以通过它来监听客户端发送的数据、处理连接断开等事件。
3. 监听客户端发送的数据
通过 socket.on('data', callback)
方法可以监听客户端发送的数据。data
事件会在客户端发送数据时触发,回调函数中的 data
参数是一个 Buffer 对象,可以通过 toString()
方法将其转换为字符串。
4. 广播消息给所有客户端
在接收到客户端发送的消息后,可以通过 server.getConnections()
方法获取当前连接的客户端数量,并通过 server.emit()
方法触发一个自定义的 broadcast
事件。在 broadcast
事件的处理函数中,遍历所有连接的客户端,并将消息发送给除发送者之外的所有客户端。
5. 处理客户端断开连接
通过 socket.on('end', callback)
方法可以监听客户端断开连接的事件。当客户端断开连接时,end
事件会被触发,可以在回调函数中执行一些清理操作。
6. 处理连接错误
通过 socket.on('error', callback)
方法可以监听连接过程中发生的错误。如果连接过程中出现错误,error
事件会被触发,可以在回调函数中处理错误。
7. 启动服务器
通过 server.listen(port, callback)
方法可以启动服务器并开始监听指定的端口。当服务器成功启动后,回调函数会被触发,可以在回调函数中输出一些启动成功的日志信息。
8. 广播消息的实现
在 broadcast
事件的处理函数中,遍历所有连接的客户端,并通过 socket.write()
方法将消息发送给除发送者之外的所有客户端。这样可以实现简单的聊天室功能,所有客户端都能接收到其他客户端发送的消息。