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中转换URL字符串与查询字符串详解
Nov 26 NodeJs
nodejs实现获取当前url地址及url各种参数值
Jun 25 NodeJs
Nodejs的express使用教程
Nov 23 NodeJs
Nodejs Stream 数据流使用手册
Apr 17 NodeJs
详解NodeJS框架express的路径映射(路由)功能及控制
Mar 24 NodeJs
nodejs获取微信小程序带参数二维码实现代码
Apr 12 NodeJs
nodejs个人博客开发第七步 后台登陆
Apr 12 NodeJs
nodejs中sleep功能实现暂停几秒的方法
Jul 12 NodeJs
Windows下快速搭建NodeJS本地服务器的步骤
Aug 09 NodeJs
NodeJs通过async/await处理异步的方法
Oct 09 NodeJs
Nodejs连接mysql并实现增、删、改、查操作的方法详解
Jan 04 NodeJs
基于nodejs res.end和res.send的区别
May 14 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
destoon二次开发模板及调用语法汇总
2014/06/21 PHP
PHP获取ip对应地区和使用网络类型的方法
2015/03/11 PHP
最新版本PHP 7 vs HHVM 多角度比较
2016/02/14 PHP
Laravel5.7 数据库操作迁移的实现方法
2019/04/12 PHP
JavaScript 异步调用框架 (Part 1 - 问题 & 场景)
2009/08/03 Javascript
jquery 图片截取工具jquery.imagecropper.js
2010/04/09 Javascript
jQueryPad 实用的jQuery测试工具(支持IE,chrome,FF)
2010/05/22 Javascript
js特殊字符转义介绍
2013/11/05 Javascript
在JavaScript中用getMinutes()方法返回指定的分时刻
2015/06/10 Javascript
基于jQuery日历插件制作日历
2016/03/11 Javascript
浅谈jquery页面初始化的4种方式
2016/11/27 Javascript
JavaScript中Math对象的方法介绍
2017/01/05 Javascript
vue单页开发父子组件传值思路详解
2018/05/18 Javascript
webpack分离css单独打包的方法
2018/06/12 Javascript
解决eclipse中没有js代码提示的问题
2018/10/10 Javascript
微信小程序实现页面下拉刷新和上拉加载功能详解
2018/12/03 Javascript
vue如何截取字符串
2019/05/06 Javascript
vue使用高德地图根据坐标定位点的实现代码
2019/08/22 Javascript
Vue extend的基本用法(实例详解)
2019/12/09 Javascript
Vue页面跳转传递参数及接收方式
2020/09/09 Javascript
pygame播放音乐的方法
2015/05/19 Python
python操作MySQL 模拟简单银行转账操作
2017/09/27 Python
基于python3 OpenCV3实现静态图片人脸识别
2018/05/25 Python
python实现pdf转换成word/txt纯文本文件
2018/06/07 Python
python得到单词模式的示例
2018/10/15 Python
django 将model转换为字典的方法示例
2018/10/16 Python
python判断计算机是否有网络连接的实例
2018/12/15 Python
python实现可下载音乐的音乐播放器
2020/02/25 Python
Python基于read(size)方法读取超大文件
2020/03/12 Python
OpenCV灰度化之后图片为绿色的解决
2020/12/01 Python
Pandas中DataFrame交换列顺序的方法实现
2020/12/14 Python
注册资产评估专业求职信
2014/07/16 职场文书
教师考核表个人总结
2015/02/12 职场文书
2015年小学语文教学工作总结
2015/05/25 职场文书
Mac电脑OS系统下安装Nginx的详细教程
2022/04/14 Servers
Win11任务栏无法正常显示 资源管理器不停重启的解决方法
2022/07/07 数码科技