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开发环境配置与使用
Nov 17 NodeJs
Nodejs爬虫进阶教程之异步并发控制
Feb 15 NodeJs
nodejs读写json文件的简单方法(必看)
Mar 09 NodeJs
详解nodejs中的process进程
Mar 19 NodeJs
nodejs开发——express路由与中间件
Mar 24 NodeJs
nodejs个人博客开发第四步 数据模型
Apr 12 NodeJs
手把手教你把nodejs部署到linux上跑出hello world
Jun 19 NodeJs
深入解析nodejs HTTP服务
Jul 25 NodeJs
Mac下通过brew安装指定版本的nodejs教程
May 17 NodeJs
NodeJS加密解密及node-rsa加密解密用法详解
Oct 12 NodeJs
基于nodejs的雪碧图制作工具的示例代码
Nov 05 NodeJs
NodeJS开发人员常见五个错误理解
Oct 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
数据库相关问题
2006/10/09 PHP
PHP中substr_count()函数获取子字符串出现次数的方法
2016/01/07 PHP
php获取文件名称和扩展名的方法
2017/02/07 PHP
PHP getName()函数讲解
2019/02/03 PHP
PHP实现chrome表单请求数据转换为接口使用的json数据
2021/03/04 PHP
用javascript实现的仿Flash广告图片轮换效果
2007/04/24 Javascript
Javascript this指针
2009/07/30 Javascript
cookie的复制与使用记住用户名实现代码
2013/11/04 Javascript
Jquery 获取对象的几种方式介绍
2014/01/17 Javascript
JavaScript用JQuery呼叫Server端方法示例代码
2014/09/03 Javascript
告诉你什么是javascript的回调函数
2014/09/04 Javascript
JavaScript设计模式之单件模式介绍
2014/12/28 Javascript
CSS或者JS实现鼠标悬停显示另一元素
2016/01/22 Javascript
vue路由对不同界面进行传参及跳转的总结
2019/04/20 Javascript
详解关于React-Router4.0跳转不置顶解决方案
2019/05/10 Javascript
react实现移动端下拉菜单的示例代码
2020/01/16 Javascript
koa2的中间件功能及应用示例
2020/03/05 Javascript
解决Vue watch里调用方法的坑
2020/11/07 Javascript
python中关于时间和日期函数的常用计算总结(time和datatime)
2013/03/08 Python
用于统计项目中代码总行数的Python脚本分享
2015/04/21 Python
python字典快速保存于读取的方法
2018/03/23 Python
Python解决八皇后问题示例
2018/04/22 Python
Python读写/追加excel文件Demo分享
2018/05/03 Python
python利用Tesseract识别验证码的方法示例
2019/01/21 Python
如何理解Python中包的引入
2020/05/29 Python
pandas针对excel处理的实现
2021/01/15 Python
使用html2canvas实现将html内容写入到canvas中生成图片
2020/01/03 HTML / CSS
Weblogic和WebSphere不同特点
2012/05/09 面试题
完美实现CSS垂直居中的11种方法
2021/03/27 HTML / CSS
毕业生就业自荐书
2013/12/15 职场文书
环保宣传标语
2014/06/12 职场文书
拆迁委托协议书
2014/09/15 职场文书
荆州古城导游词
2015/02/06 职场文书
中学生勤俭节约倡议书
2015/04/29 职场文书
运动会入场词
2015/07/18 职场文书
Python初学者必备的文件读写指南
2021/06/23 Python