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的子进程(child_process)调用系统命令的方法分享
Jun 05 NodeJs
使用nodejs中httpProxy代理时候出现404异常的解决方法
Aug 15 NodeJs
nodejs的压缩文件模块archiver用法示例
Jan 18 NodeJs
Nodejs 发送Post请求功能(发短信验证码例子)
Feb 09 NodeJs
实例分析nodejs模块xml2js解析xml过程中遇到的坑
Mar 18 NodeJs
使用 NodeJS+Express 开发服务端的简单介绍
Apr 07 NodeJs
让nodeJS支持ES6的词法----babel的安装和使用方法
Jul 31 NodeJs
nodejs创建简易web服务器与文件读写的实例
Sep 07 NodeJs
nodejs实现简单的gulp打包
Dec 21 NodeJs
nodeJS服务器的创建和重新启动的实现方法
May 12 NodeJs
nodejs 生成和导出 word的实例代码
Jul 31 NodeJs
Nodejs libuv运行原理详解
Aug 21 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
历史证明,懒惰才是推动科学发展技术进步的动力
2021/03/02 无线电
解析Linux下Varnish缓存的配置优化
2013/06/20 PHP
PHP动态柱状图实现方法
2015/03/30 PHP
php判断邮箱地址是否存在的方法
2016/02/13 PHP
php中引用&的用法分析【变量引用,函数引用,对象引用】
2016/12/12 PHP
滚动条变色 隐藏滚动条与双击网页自动滚屏显示代码
2009/12/28 Javascript
JavaScript判断窗口是否最小化的代码(跨浏览器)
2010/08/01 Javascript
javascript中的prototype属性实例分析说明
2010/08/09 Javascript
jquery ajax属性async(同步异步)示例
2013/11/05 Javascript
JSON格式化输出
2014/11/10 Javascript
jQuery事件绑定on()与弹窗实现代码
2016/04/28 Javascript
JS仿百度自动下拉框模糊匹配提示
2016/07/25 Javascript
jQuery动态创建元素以及追加节点的实现方法
2016/10/20 Javascript
Vue.js组件使用开发实例教程
2016/11/01 Javascript
javascript 初学教程及五子棋小程序的简单实现
2017/07/04 Javascript
JS原生轮播图的简单实现(推荐)
2017/07/22 Javascript
JavaScript实现三级联动菜单效果
2017/08/16 Javascript
使用FileReader API创建Vue文件阅读器组件
2018/04/03 Javascript
JS实现动态倒计时功能(天数、时、分、秒)
2019/12/12 Javascript
多页vue应用的单页面打包方法(内含打包模式的应用)
2020/06/11 Javascript
Python只用40行代码编写的计算器实例
2017/05/10 Python
python实现多线程行情抓取工具的方法
2018/02/28 Python
Python中实例化class的执行顺序示例详解
2018/10/14 Python
django用户登录验证的完整示例代码
2019/07/21 Python
matlab中imadjust函数的作用及应用举例
2020/02/27 Python
意大利香水和彩妆护肤品购物网站:Ditano
2017/08/13 全球购物
微软瑞士官方网站:Microsoft瑞士
2018/04/20 全球购物
违反校纪校规检讨书
2014/02/15 职场文书
大学社团活动总结
2014/04/26 职场文书
小学生安全教育广播稿
2014/10/20 职场文书
2014年语文教学工作总结
2014/12/17 职场文书
2015年八一建军节演讲稿
2015/03/19 职场文书
签字仪式主持词
2015/07/03 职场文书
大学体育课感想
2015/08/10 职场文书
《比尾巴》教学反思
2016/02/24 职场文书
动画电影《擅长捉弄人的高木同学》6月10日上映!
2022/03/20 日漫