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极简入门教程(二):定时器
Oct 25 NodeJs
Nodejs下DNS缓存问题浅析
Nov 16 NodeJs
NodeJs安装npm包一直失败的解决方法
Apr 28 NodeJs
Nodejs回调加超时限制两种实现方法
Jun 09 NodeJs
Nodejs实现文件上传的示例代码
Sep 26 NodeJs
浅谈NodeJs之数据库异常处理
Oct 25 NodeJs
nodejs基于mssql模块连接sqlserver数据库的简单封装操作示例
Jan 05 NodeJs
nodejs的路径问题的解决
Jun 30 NodeJs
nodejs require js文件入口,在package.json中指定默认入口main方法
Oct 10 NodeJs
nodejs实现用户登录路由功能
May 22 NodeJs
nodejs读取图片返回给浏览器显示
Jul 25 NodeJs
NodeJS有难度的面试题(能答对几个)
Oct 09 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中常见的sql攻击正则表达式汇总
2014/11/06 PHP
写入cookie的JavaScript代码库 cookieLibrary.js
2009/10/24 Javascript
IE6下出现JavaScript未结束的字符串常量错误的解决方法
2010/11/21 Javascript
Array的push与unshift方法性能比较分析
2011/03/05 Javascript
给文字加上着重号的JS代码
2013/11/12 Javascript
javascript从右边截取指定字符串的三种实现方法
2013/11/29 Javascript
使用JavaScript判断图片是否加载完成的三种实现方式
2014/05/04 Javascript
关闭时刷新父窗口两种方法
2014/05/07 Javascript
jQuery中trigger()方法用法实例
2015/01/19 Javascript
12行javascript代码绘制一个八卦图
2015/04/02 Javascript
jQuery Validation Plugin验证插件手动验证
2016/01/26 Javascript
jQuery层次选择器用法示例
2016/09/09 Javascript
javascript实现根据汉字获取简拼
2016/09/25 Javascript
实例详解display:none与visible:hidden的区别
2017/03/30 Javascript
详解Vue用axios发送post请求自动set cookie
2017/05/10 Javascript
详解Node 定时器
2018/02/26 Javascript
AngularJS实现的base64编码与解码功能示例
2018/05/17 Javascript
对vuejs的v-for遍历、v-bind动态改变值、v-if进行判断的实例讲解
2018/08/27 Javascript
vue服务端渲染缓存应用详解
2018/09/12 Javascript
JavaScript变速动画函数封装添加任意多个属性
2019/04/03 Javascript
详解js实时获取并显示当前时间的方法
2019/05/10 Javascript
使用JS监听键盘按下事件(keydown event)
2019/11/07 Javascript
vue3.0实现插件封装
2020/12/14 Vue.js
Python使用xlrd读取Excel格式文件的方法
2015/03/10 Python
python生成随机密码或随机字符串的方法
2015/07/03 Python
Python中使用urllib2模块编写爬虫的简单上手示例
2016/01/20 Python
Python 数据结构之队列的实现
2017/01/22 Python
Django之编辑时根据条件跳转回原页面的方法
2019/08/21 Python
Python基于pyecharts实现关联图绘制
2020/03/27 Python
python Selenium 库的使用技巧
2020/10/16 Python
阿联酋航空官方网站:Emirates
2017/10/17 全球购物
Java 中访问数据库的步骤?Statement 和PreparedStatement 之间的区别?
2012/06/05 面试题
资产评估专业学生的自我鉴定
2013/11/14 职场文书
医院安全生产月活动总结
2014/07/05 职场文书
小学生我的梦想演讲稿
2014/08/21 职场文书
科学家测试在太空中培育人造肉,用于未来太空旅行
2022/04/29 数码科技