node的ws的api详细讲解

WebSocket是一种在单个TCP连接上进行全双工通信的协议。Node.js中的ws模块提供了WebSocket的实现,使得Node.js可以轻松地创建WebSocket服务器和客户端。

在ws模块中,WebSocket客户端由WebSocket类实现。WebSocket提供了一系列的API,用于管理WebSocket连接、发送消息等操作。本文将详细讲解WebSocket客户端和服务端的API。

一、WebSocket客户端API

1. WebSocket的创建

在使用WebSocket之前,需要先创建一个WebSocket连接。创建WebSocket的方式如下:

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

上述代码中,首先引入了ws模块,然后通过new关键字创建了一个WebSocket实例。在创建WebSocket时,需要传递一个URL,指定WebSocket服务器的地址和端口号。

2. WebSocket的事件

WebSocket提供了一系列的事件,用于监听WebSocket连接的建立、关闭等事件。以下是WebSocket的常用事件:

  • open:当WebSocket连接建立成功时触发该事件。
  • message:当WebSocket连接收到消息时触发该事件。
  • error:当WebSocket连接发生错误时触发该事件。
  • close:当WebSocket连接关闭时触发该事件。

示例代码如下:

ws.on('open', function open() {
  console.log('connected');
  ws.send('hello');
});

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

ws.on('close', function close() {
  console.log('disconnected');
});

上述代码中,使用了ws.on()方法监听了open、message和close事件。当WebSocket连接建立成功时,会触发open事件。当WebSocket连接收到消息时,会触发message事件,并传递消息内容作为参数。当WebSocket连接关闭时,会触发close事件。

3. WebSocket的属性和方法

WebSocket提供了一些属性和方法,用于管理WebSocket连接、发送消息等操作。以下是WebSocket的常用属性和方法:

  • readyState:WebSocket连接的状态。常用值包括CONNECTING、OPEN、CLOSING和CLOSED。
  • send:向WebSocket服务器发送消息。
  • close:关闭WebSocket连接。

示例代码如下:
js

ws.send('hello');
ws.close();

上述代码中,通过ws.send方法向WebSocket服务器发送消息。通过ws.close方法关闭WebSocket连接。

二、WebSocket服务端API

1. WebSocket.Server的创建

在使用WebSocket.Server之前,需要先创建一个WebSocket服务器。创建WebSocket.Server的方式如下:

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

上述代码中,首先引入了ws模块,然后通过new关键字创建了一个WebSocket.Server实例。在创建WebSocket.Server时,需要传递一个配置对象,其中port属性指定WebSocket服务器监听的端口号。

2. WebSocket.Server的事件

WebSocket.Server提供了一系列的事件,用于监听WebSocket连接的建立、关闭等事件。以下是WebSocket.Server的常用事件:

  • connection:当有新的WebSocket连接建立时触发该事件。
  • error:当WebSocket服务器发生错误时触发该事件。
  • close:当WebSocket服务器关闭时触发该事件。

示例代码如下:

wss.on('connection', function connection(ws) {
  console.log('new connection');
  ws.on('message', function incoming(data) {
    console.log(`received message: ${data}`);
  });
  ws.on('close', function close() {
    console.log('disconnected');
  });
});

上述代码中,使用了wss.on()方法监听了connection事件。当有新的WebSocket连接建立时,会触发该事件,并传递一个WebSocket实例ws作为参数。在连接建立后,可以通过ws.on()方法监听message和close事件,以处理WebSocket连接收到消息和关闭的情况。

3. WebSocket.Server的方法

WebSocket.Server提供了一系列的方法,用于管理WebSocket连接、发送消息等操作。以下是WebSocket.Server的常用方法:

  • clients:获取当前WebSocket服务器中所有的WebSocket连接。
  • broadcast:向所有WebSocket连接发送消息。
  • close:关闭WebSocket服务器。

示例代码如下:

// 获取所有WebSocket连接
const clients = wss.clients;

// 向所有WebSocket连接发送消息
wss.broadcast = function broadcast(data) {
  clients.forEach(function each(client) {
    if (client.readyState === WebSocket.OPEN) {
      client.send(data);
    }
  });
};

// 关闭WebSocket服务器
wss.close();

上述代码中,首先通过wss.clients获取了当前WebSocket服务器中所有的WebSocket连接。然后通过定义wss.broadcast方法,实现向所有WebSocket连接发送消息的功能。最后通过wss.close方法关闭WebSocket服务器。

4. 总结

WebSocket是一种在单个TCP连接上进行全双工通信的协议。Node.js中的ws模块提供了WebSocket的实现,使得Node.js可以轻松地创建WebSocket服务器和客户端。本文详细讲解了WebSocket客户端和服务端的API,包括创建WebSocket连接、监听WebSocket连接的事件、管理WebSocket连接的方法以及WebSocket实例的属性和方法

  • 6
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
`node ws broadcast` 是一个使用 Node.js 和 WebSocket 技术开发的实现群发功能的示例程序。它可以实现在一个 WebSocket 服务器上同时向多个客户端发送消息,这个功能通常用于聊天室、直播室或者在线游戏等场景。 具体来说,`node ws broadcast` 的实现原理是在 WebSocket 服务器端维护一个客户端列表,当有新的客户端连接上来或者某个客户端发送消息时,服务器会遍历客户端列表,将消息发送给每个客户端。这个过程可以使用 Node.js 的 `ws` 模块来实现,代码如下: ```javascript const WebSocket = require('ws'); const wss = new WebSocket.Server({ port: 8080 }); const clients = new Set(); wss.on('connection', function connection(ws) { clients.add(ws); ws.on('message', function incoming(message) { for (let client of clients) { client.send(message); } }); ws.on('close', function() { clients.delete(ws); }); }); ``` 在这个示例中,`wss` 是 WebSocket 服务器实例,`clients` 是客户端列表。当有新的客户端连接上来时,服务器会将它添加到客户端列表中;当客户端发送消息时,服务器会遍历客户端列表,将消息发送给每个客户端;当客户端断开连接时,服务器会将它从客户端列表中删除。 要启动这个示例程序,只需要在终端中输入以下命令: ``` node ws-broadcast.js ``` 然后在浏览器中打开多个页面,分别连接到 `ws://localhost:8080`,就可以在不同的页面之间进行聊天了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值