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 相关文章推荐
使用upstart把nodejs应用封装为系统服务实例
Jun 01 NodeJs
浅析nodejs实现Websocket的数据接收与发送
Nov 19 NodeJs
nodejs 的 session 简单使用
Jun 06 NodeJs
详解nodejs 文本操作模块-fs模块(三)
Dec 22 NodeJs
Nodejs基于LRU算法实现的缓存处理操作示例
Mar 17 NodeJs
ubuntu编译nodejs所需的软件并安装
Sep 12 NodeJs
nodejs实现一个word文档解析器思路详解
Aug 14 NodeJs
nodejs中request库使用HTTPS代理的方法
Apr 30 NodeJs
通过Nodejs搭建网站简单实现注册登录流程
Jun 14 NodeJs
nodejs对项目下所有空文件夹创建gitkeep的方法
Aug 02 NodeJs
nodejs的安装使用与npm的介绍
Sep 11 NodeJs
NodeJS模块Buffer原理及使用方法解析
Nov 11 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实现的oracle分页函数实例
2016/01/25 PHP
PHP用mysql_insert_id()函数获得刚插入数据或当前发布文章的ID
2016/11/25 PHP
用javascript获取地址栏参数
2006/12/22 Javascript
javascript编程起步(第七课)
2007/02/27 Javascript
Javascript 学习笔记 错误处理
2009/07/30 Javascript
juqery 学习之三 选择器 简单 内容
2010/11/25 Javascript
javascript创建数组之联合数组的使用方法示例
2013/12/26 Javascript
js中的如何定位固定层的位置
2014/06/15 Javascript
纯JavaScript实现的兼容各浏览器的添加和移除事件封装
2015/03/28 Javascript
PHP和NodeJs开发的应用如何共用Session
2015/04/16 NodeJs
详细解读JavaScript编程中的Promise使用
2015/07/27 Javascript
AngularJS实现全选反选功能
2015/12/08 Javascript
JavaScript事件处理的方式(三种)
2016/04/26 Javascript
仿Angular Bootstrap TimePicker创建分钟数-秒数的输入控件
2016/07/01 Javascript
浅谈Javascript数据属性与访问器属性
2016/07/26 Javascript
浅谈angularjs $http提交数据探索
2017/01/20 Javascript
详解Vue + Vuex 如何使用 vm.$nextTick
2017/11/20 Javascript
JS简单数组排序操作示例【sort方法】
2019/05/17 Javascript
JS常见面试试题总结【去重、遍历、闭包、继承等】
2019/08/27 Javascript
vue+element-ui JYAdmin后台管理系统模板解析
2020/07/28 Javascript
JS算法教程之字符串去重与字符串反转
2020/12/15 Javascript
[55:48]VGJ.S vs TNC Supermajor 败者组 BO3 第二场 6.6
2018/06/07 DOTA
Python os模块介绍
2014/11/30 Python
举例讲解如何在Python编程中进行迭代和遍历
2016/01/19 Python
python实现合并两个排序的链表
2019/03/03 Python
Python 获取命令行参数内容及参数个数的实例
2019/12/20 Python
pytorch中tensor张量数据类型的转化方式
2019/12/31 Python
使用pytorch搭建AlexNet操作(微调预训练模型及手动搭建)
2020/01/18 Python
Python中常用的os操作汇总
2020/11/05 Python
原生canvas制作画图小工具的踩坑和爬坑
2020/06/09 HTML / CSS
机械化及自动化毕业生的自我评价分享
2013/11/06 职场文书
证婚人搞笑证婚词
2014/01/10 职场文书
对公司合理化的建议书
2014/03/12 职场文书
技术比武方案
2014/05/19 职场文书
涨工资申请书应该怎么写?
2019/07/08 职场文书
Python爬取英雄联盟MSI直播间弹幕并生成词云图
2021/06/01 Python