尼采般地抒情

公告栏

此网站主题为本人手写主题, 主题待开源···

站点信息

文章总数目: 298
已运行时间: 991
目录
  1. 服务端方面:
  2. 客户端方面:

尼采般地抒情

尼采般地抒情

公告栏

此网站主题为本人手写主题, 主题待开源···

站点信息

文章总数目: 298
已运行时间: 991

nodejs的ws模块使用


服务端方面:

const ws = require('ws')

// 创建一个 WebSocket 服务器,监听的是 30002 端口
const webSocketServer = new ws.Server({
port: 30002,
});

// 监听的是 WebSocket 服务开始监听的事件
webSocketServer.on('listening', (socket) => {
console.log('服务端连接成功');
});

// 监听的是 WebSocket 服务被客户端连接上的事件
webSocketServer.on('connection', (socket, req) => {

socket.on('message', (data) => {
console.log('收到来自客户端的消息: ', data.toString('utf8'));
// 如果客户端发送的数据为 from_client_sended 服务端会关闭当前连接
if (data.toString('utf8') === 'from_client_sended') {
socket.close(); // 异步 微任务类型
// console.log('判断 socket.close 语句是否为微任务类型')
setTimeout(() => {
console.log('----------------------')
webSocketServer.close();
}, 3000);
}
});

// 监听的是,服务端收到了客户端关闭连接的事件,由客户端发起的关闭
socket.on('close', (code, reason) => {
console.log('服务端关闭',code, reason);
});

// 监听的是,WebSocket 通信过程中出错的事件
socket.on('error', (error) => {
console.log('服务端出错:', error);
});

socket.send('服务端发送的消息+');

});

客户端方面:

const ws = require('ws')

// 创建 WebSocket 客户端,连接的是本机的 30002 的 WebSocket 服务
const webSocketClient = new ws('ws://127.0.0.1:30002');

// 监听的是 客户端获知 WebSocket 连接成功后的事件
webSocketClient.on('open', () => {
console.log('客户端连接成功');
});

webSocketClient.on('message', (data) => {
// 客户端收到了来自服务端的消息 需要转义
console.log('收到来自服务端的消息: %s', data);
console.log('3 秒后主动给服务端发送消息')
setTimeout(() => {
// 客户端给服务端发送消息
webSocketClient.send('from_client_sended');
}, 3000);
});

// 监听的是 通信过程中出错的事件
webSocketClient.on('error', (error) => {
console.log('客户端出现错误', error);
});

// 监听的是 WebSocket 连接被关闭的事件,由服务端发起的关闭
webSocketClient.on('close', () => {
console.log('客户端关闭');
});

评论区

Twikoo giscus