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实例的属性和方法

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

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

相关文章

linux切换到字符界面stemctl,CentOS7两种模式

1.13 救援模式忘记root用户密码修改密码: 单用户模式(但只能物理机操作不能远程操作,gaub没加密或者知道gaub才能修改)忘记root用户密码修改密码: 单用户模式(但只能物理机操作不能远程操作,gaub没加密或者知道gaub才能修改)关机 …

c语言编程15,c语言编程15题.doc

——————日历问题——————#includeint xing(int year);int run(int year);int main(){int year;int yue[12]{31,28,31,30,31,30,31,31,30,31,30,31};int xingqi[12];int i,j,k;printf("可以计算公元前的\n请输入年份:");scanf("%d",&year);yea…

东北大学c语言真题及答案,东北大学C语言总测试题(含答案).pdf

C语言总测试题 计算机编程引论(C语言)1.一个C程序的执行是从: 备注及演草:A)本程序的main函数开始,到main函数结束B)本程序文件的第一个函数开始,到本程序文件的最后一个函数结束C)本程序的main函数开始,到本程序文件的…

c语言的位操作指令,C语言位运算

1. C语言中的位操作符因为C语言的设计目的是取代汇编语言,所以它必须支持汇编语言所具有的运算能力,所以C语言支持全部的位操作符(Bitwise Operators)。位操作是对字节或字中的位(bit)进行测试、置位或移位处理,在对微处理器的编程中&#xf…

c语言long a什么意思啊,英文long的中文是什么意思

英文long的中文是什么意思想要掌握long这个英文单词,我们首先就得先清楚它的中文意思是什么。为此百分网小编为大家带来英文单词long的中文意思。英文long的中文意思形容词 长的; 长时间的; 冗长的,过长的.; 长音的副词 长久地; 始终; 遥远地名词 长时间…

山东科技大学c语言完全题库,“山东科技大学十大未解之谜”之完全解答

“山东科技大学十大未解之谜”之完全解答(2012-04-24 13:53:36)标签:娱乐当我还是一枚小正太刚刚进入山科大的时候,我就看到过这些未解之谜,现在每每看到童鞋们转发这篇经久不衰的文章并且表达自己的疑问,我作为一名资深理科技术宅…

c语言如何一直变换颜色,【图片】(原创)用纯C变了个变色输出字符的程序。。。【c语言吧】_百度贴吧...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼#include#include#includemain(){char c;int i,j,k,l,m,n,o;int x,y;char c1;int a,b,d,e;x35;y8;textcolor(13);gotoxy(35,10),cprintf("photoshop2014");textcolor(11);gotoxy(20,11);cprintf(" My name is zhou …

android广播注册源码,android 广播源码简要分析-注册

android broadcast1,广播注册静态注册:在系统服务启动时会添加PackageManagerService,在该类的构造方法中就会对各个应用安装目录的apk文件进行扫描解析详细步骤1,PackageManagerService初始化的时候,扫描系统目录下的…

android盒子改造,【当贝市场】废旧手机改造成电视盒子详细教程

3.直接即可输出视频了,然后在手机上安装暴风影音等视频软件的tv版,即可开始观看。有人会说,旧手机电池不行,看一会儿就得没电,怎么办?首先,在你输出到电视时,你就可以给手机锁屏&…

android分辨率px跟dp,Android屏幕适配 px,dp,dpi及density的关系与深入理解

PX(pixel):即传统计算机语言中描述的像素,在Android则代表绝对像素。之所以Android中不推荐使用这种单位,正是因为不同生产厂商,不同品牌,不同屏幕的设备,其分辨率亦不一。举例来说,我们现在将某个Button的…

android onclick方法吗,Android中button的onClick事件几种方法

Android中button的onClick事件几种方法发布时间:2020-09-03 02:36:31来源:脚本之家阅读:100作者:水桶前辈Android中button的onClick事件几种方法利用三种方法,学习button的监听事件。方法一源码如下:packag…

android 播放器 反交错,反交错- 视频横纹处理

以下名词解释摘自维基百科反交错”(deinterlacing)是将交错式(即隔行扫描)(interlace)影像讯号转换为渐进式(逐行扫描)(progressive)影像讯号的一种方法。因为装置处理速度以及带宽的限制下,广播电视系统,例如NTSC或是PAL,都是使用交错式讯号…

android room表关联,如何在首次运行时填充Android Room数据库表?

我尝试了许多方法可以做到这一点,每个没有提供。首先,我尝试使用addMigrations方法向Room中添加Migration实现,但发现它只在数据库升级期间运行,但不在创建时运行。然后,我尝试使用openHelperFactory方法将SQLiteOpenH…

android webview简单使用,android WebView 简单使用Demo

activity配置文件:activity_main.xmlandroid:layout_width"match_parent"android:layout_height"match_parent"android:orientation"vertical" >android:layout_width"match_parent"android:layout_height"wrap_co…

android one x2,HTC One X 深度OS Android4.1.2 大气不失稳重 雍容华贵 流畅运行

您可能感兴趣的话题:rom刷机核心提示:注意事项:1. 本刷机教程需在windows操作系统下进行2. 刷机前确保手机电量不少于50%3. 为避免资料丢失,刷机前请先备份个人资料4. 本教程内容均来自于互联网并经N多网官方整理刷机前必看注意事…

升级鸿蒙3.0需要备份吗,升级鸿蒙OS3.0机型曝光!大哥,你是认真的吗?

鸿蒙OS系统,可真是“千呼万唤始出来”啊!自2017年华为开始研发鸿蒙内核1.0,2018年进展至鸿蒙内核2.0,2019年正式推出了鸿蒙OS1.0系统,并在发布会上预计2021年发布鸿蒙OS3.0系统。虽然在开发者大会上,华为宣…

android q全局夜间模式,安卓Q新功能全局夜间模式,网友:都9102年了,魅族Flyme早就有...

原标题:安卓Q新功能全局夜间模式,网友:都9102年了,魅族Flyme早就有目前市面上的智能手机系统基本是苹果的iOS和谷歌的安卓两分天下,其中,安卓系统的用户分布更加广泛。近日,安卓Q系列被正式曝光…

android 教程概要,Android精通教程-第一节Android入门简介

前言大家好,我是 Vic,今天给大家带来Android精通教程-第一节Android入门简介的概述,希望你们喜欢每日一句If life were predictable it would cease to be life, and be without flavor.--- Eleanor Roosevelt每日一句入门工具的安装第一步&a…

html支持的脚本语言,能不能让日志内容在支持html语言的同时支持一下脚本语言,拜托!拜托!...

日志里经常引用一个网站的歌,他们的歌曲网址有部分常改变,比如说dm1.hting.com/ht//部分,没准哪天就变成dm1.hting.com/as//。所以我想在内容模板里声明一个变量。比如说用zdy代替dm1.haoting.com/ht//。这样它那部分若变了,我就直接在内容模板里把zdy代表的字符串也…

des解码 android,DES解密出错

- 当前 Bug 的表现(可附上截图)执行crypto.TripleDES().decrypt 时,出现下面错误:VM5902:1 URIError: URI malformedat decodeURIComponent ()at Function.value (appservice.js:984)at toString (appservice.js:984)at t.onShow (binded.js? [sm]:123)…