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 相关文章推荐
快速掌握Node.js之Window下配置NodeJs环境
Mar 21 NodeJs
NodeJS实现图片上传代码(Express)
Jun 30 NodeJs
nodejs构建本地web测试服务器 如何解决访问静态资源问题
Jul 14 NodeJs
nodejs基于mssql模块连接sqlserver数据库的简单封装操作示例
Jan 05 NodeJs
详解nodeJs文件系统(fs)与流(stream)
Jan 24 NodeJs
nodejs中函数的调用实例详解
Oct 31 NodeJs
Nodejs libuv运行原理详解
Aug 21 NodeJs
Nodejs实现图片上传、压缩预览、定时删除功能
Oct 25 NodeJs
nodejs中使用archive压缩文件的实现代码
Nov 26 NodeJs
Nodejs + Websocket 指定发送及群聊的实现
Jan 09 NodeJs
用Nodejs实现在终端中炒股的实现
Oct 18 NodeJs
nodejs使用Sequelize框架操作数据库的实现
Oct 21 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字符串分割函数explode的实例代码
2013/02/07 PHP
PHP+JS实现大规模数据提交的方法
2015/07/02 PHP
thinkPHP使用pclzip打包备份mysql数据库的方法
2016/04/30 PHP
yii2项目实战之restful api授权验证详解
2017/05/20 PHP
基于ThinkPHP删除目录及目录文件函数
2020/10/28 PHP
理解Javascript_07_理解instanceof实现原理
2010/10/15 Javascript
解决自定义$(id)的方法与jquery选择器$冲突的问题
2014/06/14 Javascript
深入探讨javascript中的数据类型
2015/03/04 Javascript
深入解读JavaScript中的Iterator和for-of循环
2015/07/28 Javascript
高性能JavaScript循环语句和条件语句
2016/01/20 Javascript
JavaScript常用本地对象小结
2016/03/28 Javascript
最全的JavaScript开发工具列表 总有一款适合你
2017/06/29 Javascript
基于vue-cli 打包时抽离项目相关配置文件详解
2018/03/07 Javascript
mpvue中配置vuex并持久化到本地Storage图文教程解析
2018/03/15 Javascript
详解vue.js根据不同环境(正式、测试)打包到不同目录
2018/07/13 Javascript
vue中的面包屑导航组件实例代码
2019/07/01 Javascript
如何通过javaScript去除字符串两端的空白字符
2020/02/06 Javascript
vue插件--仿微信小程序showModel实现模态提示窗功能
2020/08/19 Javascript
python实现单线程多任务非阻塞TCP服务端
2017/06/13 Python
Python分析学校四六级过关情况
2017/11/22 Python
Python中collections模块的基本使用教程
2018/12/07 Python
Python中作用域的深入讲解
2018/12/10 Python
python原类、类的创建过程与方法详解
2019/07/19 Python
python求绝对值的三种方法小结
2019/12/04 Python
Python qrcode 生成一个二维码的实例详解
2020/02/12 Python
通过案例解析python鸭子类型相关原理
2020/10/10 Python
CSS3实现苹果手机解锁的字体闪亮效果示例
2021/01/05 HTML / CSS
html5使用canvas绘制文字特效
2014/12/15 HTML / CSS
男女时尚与复古风格在线购物:RoseGal(全球免费送货)
2017/07/19 全球购物
LivingSocial爱尔兰:爱尔兰本地优惠
2018/08/10 全球购物
拉斯维加斯酒店、演出、旅游、俱乐部及更多:Vegas.com
2019/02/28 全球购物
团队拓展活动方案
2014/08/28 职场文书
党的群众路线教育实践活动个人对照检查材料(医生)
2014/11/05 职场文书
2016年学习雷锋精神广播稿
2015/12/17 职场文书
2016廉政教育学习心得体会
2016/01/25 职场文书
简单聊聊TypeScript只读修饰符
2022/04/06 Javascript