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访问ActiveX对象,以操作Access数据库为例。
Dec 15 NodeJs
NodeJs中的非阻塞方法介绍
Jun 05 NodeJs
Nodejs sublime text 3安装与配置
Jun 19 NodeJs
nodejs根据ip数组在百度地图中进行定位
Mar 06 NodeJs
NodeJS链接MySql数据库的操作方法
Jun 27 NodeJs
nodejs前端自动化构建环境的搭建
Jul 26 NodeJs
nodejs使用http模块发送get与post请求的方法示例
Jan 08 NodeJs
nodejs实现的连接MySQL数据库功能示例
Jan 25 NodeJs
nodeJs爬虫的技术点总结
May 13 NodeJs
NodeJS服务器实现gzip压缩的示例代码
Oct 12 NodeJs
nodejs中使用archive压缩文件的实现代码
Nov 26 NodeJs
NodeJs内存占用过高的排查实战记录
May 10 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
重置版游戏视频
2020/04/09 魔兽争霸
PHP实现把MySQL数据库导出为.sql文件实例(仿PHPMyadmin导出功能)
2014/05/10 PHP
php使用sql server验证连接数据库的方法
2014/12/25 PHP
php curl发送请求实例方法
2019/08/01 PHP
PHP下载文件函数与用法示例
2019/09/27 PHP
基于jquery的弹出提示框始终处于窗口的居中位置(类似于alert弹出框的效果)
2011/09/28 Javascript
js解析xml字符串和xml文档实现原理及代码(针对ie与火狐)
2013/02/02 Javascript
js 实现的可折叠留言板(附源码下载)
2014/07/01 Javascript
使用javascript实现雪花飘落的效果
2015/01/13 Javascript
JavaScript内存泄漏的处理方式
2017/11/20 Javascript
node简单实现一个更改头像功能的示例
2017/12/29 Javascript
jQuery.extend 与 jQuery.fn.extend的用法及区别实例分析
2018/07/25 jQuery
对angularJs中2种自定义服务的实例讲解
2018/09/30 Javascript
解决layui的radio属性或别的属性没显示出来的问题
2019/09/26 Javascript
[52:03]DOTA2-DPC中国联赛 正赛 Ehome vs iG BO3 第三场 1月31日
2021/03/11 DOTA
Python中条件选择和循环语句使用方法介绍
2013/03/13 Python
Python程序中使用SQLAlchemy时出现乱码的解决方案
2015/04/24 Python
python urllib爬取百度云连接的实例代码
2017/06/19 Python
Python实现矩阵相乘的三种方法小结
2018/07/26 Python
tensorflow实现加载mnist数据集
2018/09/08 Python
Python IDE Pycharm中的快捷键列表用法
2019/08/08 Python
python3实现弹弹球小游戏
2019/11/25 Python
tensorflow之读取jpg图像长和宽实例
2020/06/18 Python
selenium+headless chrome爬虫的实现示例
2021/01/08 Python
利用HTML5+css3+jquery+weui实现仿微信聊天界面功能
2018/01/08 HTML / CSS
ECCO英国官网:丹麦鞋履品牌
2019/09/03 全球购物
保险专业自荐信范文
2014/02/20 职场文书
《雨霖铃》教学反思
2014/02/22 职场文书
家长通知书家长意见
2014/12/30 职场文书
2015年科协工作总结
2015/05/19 职场文书
2016年优秀教师先进事迹材料
2016/02/26 职场文书
利用python做表格数据处理
2021/04/13 Python
详解MySQL 联合查询优化机制
2021/05/10 MySQL
python中的装饰器该如何使用
2021/06/18 Python
用Python实现屏幕截图详解
2022/01/22 Python
使用MybatisPlus打印sql语句
2022/04/22 SQL Server