【nodejs】链接websocket

在Node.js中连接WebSocket可以使用多种库,其中最流行的是ws库。ws是一个高性能且易于使用的WebSocket库,广泛应用于Node.js项目中。下面我将详细介绍如何使用ws库来创建WebSocket客户端和服务器端。

安装ws库

首先,你需要安装ws库。可以通过npm来安装:

npm install ws

创建WebSocket服务器端
示例代码

const WebSocket = require('ws');

const wss = new WebSocket.Server({ port: 8080 });
// 链接端口
wss.on('connection', function connection(ws) {
  console.log('Client connected.');
   // 监听消息返回
  ws.on('message', function incoming(message) {
    console.log('received: %s', message);

    // Echo the message back to the client
    ws.send(`Echo: ${message}`);
  });
  // 监听关闭websocket
  ws.on('close', function close() {
    console.log('Client disconnected.');
  });
});

console.log('WebSocket server is listening on port 8080.');

这段代码创建了一个监听在8080端口的WebSocket服务器。每当有客户端连接时,它都会打印一条消息,并且当接收到客户端发送的消息时,会回显给客户端。

创建WebSocket客户端端
示例代码

const WebSocket = require('ws');

const ws = new WebSocket('ws://localhost:8080');

ws.on('open', function open() {
  console.log('Connected to server.');
  ws.send('Hello, Server!');
});

ws.on('message', function incoming(data) {
  console.log('received: %s', data);
});

ws.on('close', function close() {
  console.log('Disconnected from server.');
});

创建了一个连接到ws://localhost:8080的WebSocket客户端。一旦连接成功,它会发送一条消息给服务器,并且接收来自服务器的消息。

示例

  • 启动服务器:运行服务器端脚本。
  • 启动客户端:运行客户端脚本。

你可以多次启动客户端脚本来测试多个客户端连接到服务器的情况。

附加功能
ws库提供了很多高级功能,例如:

  • 发送二进制数据:使用Buffer对象发送二进制数据。
  • 压缩:启用压缩以减少数据传输量。
  • 心跳检测:定期发送心跳包以保持连接活跃。

示例:发送二进制数据

// 服务器端
ws.send(Buffer.from('Hello in binary'));

// 客户端端
ws.send(Buffer.from('Binary data'));

示例:启用压缩

const WebSocket = require('ws');

const wss = new WebSocket.Server({
  port: 8080,
  perMessageDeflate: true
});

// ...

示例:设置心跳

const WebSocket = require('ws');

const wss = new WebSocket.Server({ port: 8080 });

wss.on('connection', function connection(ws) {
  ws.isAlive = true;

  ws.on('pong', function pong() {
    ws.isAlive = true;
  });

  setInterval(function ping() {
    if (!ws.isAlive) return ws.terminate();

    ws.isAlive = false;
    ws.ping(() => {});
  }, 30000); // 心跳间隔设为30秒
});

// ...

使用ws库创建WebSocket服务器和客户端非常简单直观。你可以根据实际需求调整代码,添加更多的功能。如果你需要更复杂的功能,比如认证、授权或与现有Web应用集成,可以考虑使用其他库,例如socket.io,它提供了更多高级功能,并且支持WebSocket以及其他传输方式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值