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制作爬虫全过程(续)
Dec 22 NodeJs
NodeJs基本语法和类型
Feb 13 NodeJs
Nodejs实战心得之eventproxy模块控制并发
Oct 27 NodeJs
nodeJs内存泄漏问题详解
Sep 05 NodeJs
nodejs接入阿里大鱼短信验证码的方法
Jul 10 NodeJs
NodeJS父进程与子进程资源共享原理与实现方法
Mar 16 NodeJs
修改Nodejs内置的npm默认配置路径方法
May 13 NodeJs
NodeJs 文件系统操作模块fs使用方法详解
Nov 26 NodeJs
用Electron写个带界面的nodejs爬虫的实现方法
Jan 29 NodeJs
详解Nodejs get获取远程服务器接口数据
Mar 26 NodeJs
NodeJS实现一个聊天室功能
Nov 25 NodeJs
Nodejs实现微信分账的示例代码
Jan 19 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运行出现Call to undefined function curl_init()的解决方法
2010/11/02 PHP
PHP中使用数组实现堆栈数据结构的代码
2012/02/05 PHP
php使用curl检测网页是否被百度收录的示例分享
2014/01/31 PHP
给PHP开发者的编程指南 第一部分降低复杂程度
2016/01/18 PHP
php中上传文件的的解决方案
2018/09/25 PHP
Yii框架连表查询操作示例
2019/09/06 PHP
javascript firefox兼容ie的dom方法脚本
2008/05/18 Javascript
纯js实现的论坛常用的运行代码的效果
2008/07/15 Javascript
IE中radio 或checkbox的checked属性初始状态下不能选中显示问题
2009/07/25 Javascript
javascript 面向对象,实现namespace,class,继承,重载
2009/10/29 Javascript
ExtJs GridPanel简单的增删改实现代码
2010/08/26 Javascript
THREE.JS入门教程(4)创建粒子系统
2013/01/24 Javascript
js实时获取系统当前时间实例代码
2013/06/28 Javascript
jquery实现带二级菜单的导航示例
2014/04/28 Javascript
JS 对象属性相关(检查属性、枚举属性等)
2015/04/05 Javascript
javascript实现多栏闭合展开式广告位菜单效果实例
2015/08/05 Javascript
NodeJS中的MongoDB快速入门详细教程
2016/11/11 NodeJs
jQuery中用on绑定事件时需注意的事项
2017/03/19 Javascript
vue中阻止click事件冒泡,防止触发另一个事件的方法
2018/02/08 Javascript
使用webpack构建应用的方法步骤
2019/03/04 Javascript
layui 地区三级联动 form select 渲染的实例
2019/09/27 Javascript
element-ui tree结构实现增删改自定义功能代码
2020/08/31 Javascript
浅谈vue websocket nodeJS 进行实时通信踩到的坑
2020/09/22 NodeJs
深入理解Javascript中的this关键字
2015/03/27 Python
实例讲解Python中global语句下全局变量的值的修改
2016/06/16 Python
python矩阵/字典实现最短路径算法
2019/01/17 Python
pandas的连接函数concat()函数的具体使用方法
2019/07/09 Python
生物科学专业个人求职信范文
2013/12/05 职场文书
四年级数学教学反思
2014/02/02 职场文书
《长城》教学反思
2014/02/14 职场文书
2015年九一八事变纪念日演讲稿
2015/03/19 职场文书
私人贷款担保书该怎么写呢?
2019/07/02 职场文书
python利用pandas分析学生期末成绩实例代码
2021/07/09 Python
浅谈MySQL之select优化方案
2021/08/07 MySQL
SQL基础的查询语句
2021/11/11 MySQL
python获取带有返回值的多线程
2022/05/02 Python