NodeJS多种创建WebSocket监听的方式(三种)


Posted in NodeJs onJune 04, 2020

WebSocket是HTML5开始提供的一种浏览器与服务器间进行全双工通讯的网络技术。在WebSocket API中,浏览器和服务器只需要要做一个握手(handshaking)的动作,然后,浏览器和服务器之间就形成了一条快速通道。两者之间就直接可以数据互相传送。

WebSocket是一个通信的协议,分为服务器和客户端。服务器放在后台,保持与客户端的长连接,完成双方通信的任务。客户端一般都是实现在支持HTML5浏览器核心中,通过提供JavascriptAPI使用网页可以建立websocket连接。Java实现的案例,请参考:Java现实WebSocket

为什么用Nodejs?

1. 事件驱动,通过闭包很容易实现客户端的生命活期。
2. 不用担心多线程,锁,并行计算的问题
3. V8引擎速度非常快
4. 对于游戏来说,写一遍游戏逻辑代码,前端后端通用。

当然Nodejs也有一些缺点:

1. nodejs更新很快,可能会出现版本联兼容
2. nodejs还不算成熟,还没有大制作。
3. nodejs不像其他的服务器,对于不同的连接,不支持进程和线程操作。

在权衡Nodejs给我们带来无限畅快的开发的同时,要考虑到他的不成熟,特别是对于“长连接”的网络通信应用。下面我将分别,测试一下网上几种Nodejs实现websocket的框架。

下面通过三种方式给大家介绍nodejs创建WebSocket监听的方式,具体内容如下所示:

第一种,nodejs原生自带的

//引用net库的方式

const net = require('net');
 
const server = net.createServer((socket)=>{
 socket.on("connect",(data)=>{
 console.log("connect");
 })
});
 
server.listen("8111","127.0.0.1")

第二种:

//js的原生方式

const WebSocketServer = require("ws").Server;
var ws = new WebSocketServer({ host: webConfig.ip, port: webConfig.port })
 
io.on('connection', function (socket) {
 socket.on("close", function () {
 console.log("server close");
 });
 
 socket.on("error", function (err) {
 console.log("server error " + err);
 });
 
 socket.on("message", function (cmd, data) {
 console.log("server rcv data=" + cmd);
 socket.send(data);
 });
});

第三种:

//使用外部socket.io库的方式

const io = require('socket.io')(webConfig.port);
io.sockets.on('connection', function (socket) {
 socket.on('getSysConf', function (data) {
 console.log("get sys config ");
 });
});

总结

到此这篇关于NodeJS多种创建WebSocket监听的方式的文章就介绍到这了,更多相关nodejs创建WebSocket监听内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

NodeJs 相关文章推荐
nodejs中使用monk访问mongodb
Jul 06 NodeJs
nodejs个人博客开发第六步 数据分页
Apr 12 NodeJs
nodejs开发微信小程序实现密码加密
Jul 11 NodeJs
详解NODEJS基于FFMPEG视频推流测试
Nov 17 NodeJs
nodejs操作mongodb的填删改查模块的制作及引入实例
Jan 02 NodeJs
nodejs微信扫码支付功能实现
Feb 17 NodeJs
nodejs基于express实现文件上传的方法
Mar 19 NodeJs
nodeJS模块简单用法示例
Apr 21 NodeJs
NodeJS实现同步的方法
Mar 02 NodeJs
详解NodeJS Https HSM双向认证实现
Mar 12 NodeJs
搭建一个nodejs脚手架的方法步骤
Jun 28 NodeJs
ubuntu系统下使用pm2设置nodejs开机自启动的方法
May 12 NodeJs
Sublime Text3 配置 NodeJs 环境的方法
May 20 #NodeJs
Nodejs实现WebSocket代码实例
May 19 #NodeJs
Nodejs文件上传、监听上传进度的代码
Mar 27 #NodeJs
nodejs如何在package.json中设置多条启动命令
Mar 16 #NodeJs
nodejs脚本centos开机启动实操方法
Mar 04 #NodeJs
nodejs制作小爬虫功能示例
Feb 24 #NodeJs
nodejs使用socket5进行代理请求的实现
Feb 21 #NodeJs
You might like
计算php页面运行时间的函数介绍
2013/07/01 PHP
php实现的RSS生成类实例
2015/04/23 PHP
Laravel 5.5 的自定义验证对象/类示例代码详解
2017/08/29 PHP
PHP中Session ID的实现原理实例分析
2019/08/17 PHP
再论Javascript的类继承
2011/03/05 Javascript
js change,propertychange,input事件小议
2011/12/20 Javascript
原生js ActiveXObject获取execl里面的值
2013/11/01 Javascript
谈谈JavaScript异步函数发展历程
2015/09/29 Javascript
关于 jQuery Easyui异步加载tree的问题解析
2016/12/06 Javascript
javascript中json基础知识详解
2017/01/19 Javascript
Angularjs使用指令做表单校验的方法
2017/03/31 Javascript
基于zepto.js实现登录界面
2017/10/09 Javascript
[01:51]开启你的城市传奇 完美世界城市挑战赛开始报名
2018/10/09 DOTA
[53:13]DOTA2-DPC中国联赛 正赛 DLG vs PHOENIX BO3 第三场 1月18日
2021/03/11 DOTA
pycharm 使用心得(六)进行简单的数据库管理
2014/06/06 Python
Windows上配置Emacs来开发Python及用Python扩展Emacs
2015/11/20 Python
Python实现公历(阳历)转农历(阴历)的方法示例
2017/08/22 Python
python 的 openpyxl模块 读取 Excel文件的方法
2019/09/09 Python
Pycharm远程连接服务器并实现代码同步上传更新功能
2020/02/25 Python
python小程序之4名牌手洗牌发牌问题解析
2020/05/15 Python
CSS3中的clip-path使用攻略
2015/08/03 HTML / CSS
LTD Commodities:礼品,独特发现,家居装饰,家用器皿
2017/08/11 全球购物
Nike台湾官方商店:Nike.com (TW)
2017/08/16 全球购物
倩碧英国官网:Clinique英国
2018/08/10 全球购物
Otticanet美国:最顶尖的世界名牌眼镜, 能得到打折季的价格
2019/03/10 全球购物
Lentiamo荷兰:在线订购隐形眼镜、隐形眼镜液和太阳镜
2019/10/25 全球购物
ORLY官网:美国专业美甲一线品牌
2019/12/11 全球购物
临床医学应届生求职信
2013/11/06 职场文书
幼儿师范毕业生自荐信
2013/11/09 职场文书
高中数学教学反思
2014/01/30 职场文书
幼儿园家长安全责任书
2014/07/22 职场文书
2015年学习部工作总结范文
2015/03/31 职场文书
公司奖励通知
2015/04/21 职场文书
好段摘抄大全(48句)
2019/08/08 职场文书
应届生个人的求职(自荐信范文2篇)
2019/08/23 职场文书
matplotlib之pyplot模块实现添加子图subplot的使用
2021/04/25 Python