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学习笔记之Connect中间件模块(一)
Jan 27 NodeJs
Nodejs学习笔记之测试驱动
Apr 16 NodeJs
Nodejs回调加超时限制两种实现方法
Jun 09 NodeJs
nodejs 子进程正确的打开方式
Jul 03 NodeJs
Windows下快速搭建NodeJS本地服务器的步骤
Aug 09 NodeJs
详解使用PM2管理nodejs进程
Oct 24 NodeJs
原生nodejs使用websocket代码分享
Apr 07 NodeJs
详解Nodejs内存治理
May 13 NodeJs
NodeJS加密解密及node-rsa加密解密用法详解
Oct 12 NodeJs
NodeJs 文件系统操作模块fs使用方法详解
Nov 26 NodeJs
nodejs基础之buffer缓冲区用法分析
Dec 26 NodeJs
通过实例了解Nodejs模块系统及require机制
Jul 16 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 strcmp使用说明
2010/04/22 PHP
详解关于php的xdebug配置(编辑器vscode)
2019/01/29 PHP
解决laravel中日志权限莫名变成了root的问题
2019/10/17 PHP
自定义一个jquery插件[鼠标悬浮时候 出现说明label]
2011/06/27 Javascript
jQuery右键菜单contextMenu使用实例
2011/09/28 Javascript
5个最佳的Javascript日期处理类库分享
2012/04/15 Javascript
js操作IE浏览器弹出浏览文件夹可以返回目录路径
2014/07/14 Javascript
JavaScript检测鼠标移动方向的方法
2015/05/22 Javascript
js+css实现有立体感的按钮式文字竖排菜单效果
2015/09/01 Javascript
js实现加载更多功能实例
2016/10/27 Javascript
Angular2学习笔记——详解路由器模型(Router)
2016/12/02 Javascript
jQuery实现文档树效果
2017/02/20 Javascript
vue 双向数据绑定的实现学习之监听器的实现方法
2018/11/30 Javascript
如何使用proxy实现一个简单完整的MVVM库的示例代码
2019/09/17 Javascript
[01:06] DOTA2英雄背景故事第三期之秩序法则光之守卫
2020/07/07 DOTA
python类继承用法实例分析
2014/10/10 Python
Python Web框架Flask信号机制(signals)介绍
2015/01/01 Python
详解Python程序与服务器连接的WSGI接口
2015/04/29 Python
Django 登陆验证码和中间件的实现
2018/08/17 Python
Python 读写文件的操作代码
2018/09/20 Python
Python实现栈的方法详解【基于数组和单链表两种方法】
2020/02/22 Python
opencv中图像叠加/图像融合/按位操作的实现
2020/04/01 Python
keras做CNN的训练误差loss的下降操作
2020/06/22 Python
numba提升python运行速度的实例方法
2021/01/25 Python
使用JS+CSS3技术:让你的名字动起来
2013/04/27 HTML / CSS
HTML5、Select下拉框右边加图标的实现代码(增进用户体验)
2017/10/16 HTML / CSS
P/Invoke是什么
2015/07/31 面试题
高中军训广播稿
2014/01/14 职场文书
乡镇庆八一活动方案
2014/02/02 职场文书
表决心的诗句大全
2014/03/11 职场文书
专家推荐信模板
2014/05/09 职场文书
党的群众路线整改落实情况汇报
2014/10/28 职场文书
《山中访友》教学反思
2016/02/24 职场文书
python中tkinter复选框使用操作
2021/11/11 Python
源码分析Redis中 set 和 sorted set 的使用方法
2022/03/22 Redis
java.util.NoSuchElementException原因及两种解决方法
2022/06/28 Java/Android