详细讲解node的ws中服务端的websocket.server的各种api

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

在ws模块中,WebSocket服务器由WebSocket.Server类实现。WebSocket.Server提供了一系列的API,用于管理WebSocket连接、发送消息等操作。本文将详细讲解WebSocket.Server的各种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实例的属性和方法

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

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

示例代码如下:

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/583406.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Anolis8/centos8/龙蜥8 升级glibc 2.30

背景: Anolis8/centos8/龙蜥8 系统自带的glibc是2.28版本,已经无法满足项目需要,所以将glibc版本升级到2.30。 编译升级安装 wget https://mirrors.aliyun.com/gnu/glibc/glibc-2.30.tar.gz tar -xvf glibc-2.30.tar.gz #查看glibc需要的g…

STL——list容器

目录 1.list基本概念 2.list构造函数 3.list赋值和交换 4.list大小操作 5.list插入和删除 6.list数据存取 7.list反转和排序 8.排序案例 1.list基本概念 功能:将数据进行链式存储。 链表(list)是一种物理存储单元上非连续的存储结构&…

SpringBoot-Shiro

Apache Shiro&#xff1a;https://shiro.apache.org/ 依赖 <dependency><groupId>org.apache.shiro</groupId><artifactId>shiro-spring</artifactId><version>1.4.1</version> </dependency>ShiroConfig.java Configuratio…

StringBuilder、StringBuffer

StringBuilder StringBuilder代表可变字符串对象&#xff0c;相当于是一个容器&#xff0c;它里面装的字符串是可以改变的&#xff0c;就是用来操作字符串的。好处&#xff1a;StringBuilder比String更适合做字符串的修该操作&#xff0c;效率会更高&#xff0c;代码也会更简洁…

*-over-slf4j 相关依赖包

*-over-slf4j 是 SLF4J 提供的一系列桥接依赖包&#xff0c;它们用于将其他日志框架的API调用重定向到SLF4J&#xff0c;这样就可以使用统一的SLF4J接口&#xff0c;并通过配置SLF4J的绑定器来选择实际的日志实现。以下是一些常见的 *-over-slf4j 桥接依赖包&#xff1a; jcl-o…

k8s中的namespace及创建方式

1. 什么是namespace&#xff08;名称空间&#xff09; 在 Kubernetes 中&#xff0c;Namespace&#xff08;名称空间&#xff09;是一种用于隔离和组织集群中资源的机制。通俗地说&#xff0c;它就像是在同一个 Kubernetes 集群中划分出来的一些虚拟区域&#xff0c;让你可以在…

Docker Compose容器编排实战

介绍 Docker Compose 是 Docker 官方提供的一种工具&#xff0c;用于定义和运行多个 Docker 容器的应用。它使用简单的 YAML 文件&#xff08;通常称为 docker-compose.yml&#xff09;来配置应用的服务&#xff0c;并使用单个命令即可创建、启动和停止整个应用。 官方文档&am…

计算机网络概述(上)——“计算机网络”

各位CSDN的uu们好呀&#xff0c;好久没有更新小雅兰的计算机网络的专栏啦&#xff0c;而且期末考试也要考计算机网络&#xff0c;所以&#xff0c;小雅兰就来写计算机网络的内容啦&#xff01;&#xff01;&#xff01;下面&#xff0c;让我们进入计算机网络概述的世界吧&#…

rust中的超时处理

rust中的超时处理 自从 tokio 1.0发布以来&#xff0c;rust的异步开发总算大势已定。尽管没达到标准库的速度&#xff0c;依然挡不住大家的热情。看编程排行榜&#xff0c;增加2倍的开发者。 既生瑜何生亮&#xff0c;感觉go就是小号的rust。 不废话了。背景&#xff1a;之前…

为什么要部署堡垒机

现如今网络安全越发受到重视&#xff0c;其中安全审计作为企业信息安全建设不可缺少的组成部分&#xff0c;逐渐受到用户的关注&#xff0c;是企业安全体系中的重要环节。同时&#xff0c;安全审计是事前预防、事中预警的有效风险控制手段&#xff0c;也是事后追溯的可靠证据来…

HarmonyOS引导页登陆页以及tabbar的代码说明 登陆页2

代码&#xff1a;这里的prompt.showToast是弹出提示&#xff0c;Extend(TextInput) 的功能是对TextInput做了公用的样式。isShowProgress是用来控制isShowProgress&#xff0c;出来一个等待效果 import prompt from ‘ohos.promptAction’; import router from ‘ohos.router…

Redis缓存雪崩、缓存击穿、缓存穿透

1. 什么是缓存雪崩 当我们提到缓存系统中的问题&#xff0c;缓存雪崩是一个经常被讨论的话题。缓存雪崩是指在某一时刻发生大量的缓存失效&#xff0c;导致瞬间大量的请求直接打到了数据库&#xff0c;可能会导致数据库瞬间压力过大甚至宕机。尤其在高并发的系统中&#xff0c;…

基于SVM的用气量预测,基于支持向量机SVM的用气量预测

目录 支持向量机SVM的详细原理 SVM的定义 SVM理论 Libsvm工具箱详解 简介 参数说明 易错及常见问题 完整代码和数据下载链接: 基于SVM的用气量预测,基于支持向量机SVM的用气量预测(代码完整,数据齐全)资源-CSDN文库 https://download.csdn.net/download/abc991835105/8861…

【iptables】增加规则和删除规则

我们在另外一台机器上&#xff0c;使用ping命令&#xff0c;向当前机器发送报文&#xff0c;如下图所示&#xff0c;ping命令可以得到回应&#xff0c;证明ping命令发送的报文已经正常的发送到了防火墙所在的主机&#xff0c;ping命令所在机器IP地址为31.133&#xff08;黑色&a…

前后端分离项目解决跨域问题

基于Vue的前后端分离的项目中解决跨域问题 一、前端反向代理解决跨域 在环境配置文件.env.development/staging/production中配置 请求路径的前缀 VUE_APP_BASE_API /dev-api然后在request.js中封装请求方法中通过baseURL引用公共URL axios.defaults.headers[Content-Type…

如何解决mac无法访问github

确定github能访问的ip地址 点击检测按钮&#xff0c;找到比较快的ip 修改hosts文件&#xff1a;打开终端&#xff0c;输入 open /etc/hosts 后回车&#xff0c;打开mac的文本编辑器 add github.com 140.82.121.4 github.com 199.232.69.194 github.global.ssl.fastly.net …

微服务与人工智能技术的融合

随着人工智能技术的快速发展&#xff0c;越来越多的企业开始关注微服务架构与人工智能技术的结合&#xff0c;以期在市场竞争中获得更大的优势。本文将深入探讨微服务架构与人工智能技术融合的优势、挑战&#xff0c;以及实现这一融合的最佳实践和方法。 首先&#xff0c;让我们…

NCNN环境部署及yolov5pt转ncnn模型转换推理

该内容还未完整&#xff0c;笔记内容&#xff0c;持续补充。 〇开发环境版本 vs2022 cmake3.21.1 ncnn20231027发行版 yolov5s v6.2 vunlkan1.2.198.1 Protobuf3.20.0 Opencv3.4.1 一、模型转换 yolov5s v6.2训练的pt模型&#xff0c;直接导出tourchscript&#xff0c…

ubuntu 开机自报IP地址(用于无屏幕小车-远程连接)

目录 1.环境安装2.代码3.打包成可执行文件4.开启开机自启 1.环境安装 sudo apt-get install espeak #先安装这个库 pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyttsx32.90 #再安装pyttsx3 pyinstaller pip install -i https://pypi.tuna.tsinghua.edu.cn/si…

C语言实例_生成6位数的随机密码

一、前言 随着数字化时代的到来&#xff0c;人们在各个方面需要使用密码来保护个人隐私和敏感信息的安全。为了确保密码的安全性&#xff0c;密码应该是足够强大和难以猜测的&#xff0c;这就需要密码生成器来帮助用户生成高强度的随机密码。 随机密码生成器是一种计算机程序…