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实现PHP的print_r函数代码
Mar 14 NodeJs
使用nodejs、Python写的一个简易HTTP静态文件服务器
Jul 18 NodeJs
nodejs npm package.json中文文档
Sep 04 NodeJs
基于nodejs+express(4.x+)实现文件上传功能
Nov 23 NodeJs
nodejs进阶(6)—连接MySQL数据库示例
Jan 07 NodeJs
nodejs搭建本地服务器并访问文件的方法
Mar 03 NodeJs
nodejs服务搭建教程 nodejs访问本地站点文件
Apr 07 NodeJs
nodejs中密码加密处理操作详解
Mar 20 NodeJs
nodeJS服务器的创建和重新启动的实现方法
May 12 NodeJs
nodejs 十六进制字符串型数据与btye型数据相互转换
Jul 30 NodeJs
nodejs中方法和模块用法示例
Dec 24 NodeJs
Nodejs中使用puppeteer控制浏览器中视频播放功能
Aug 26 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的计数器程序
2006/10/09 PHP
解析php中eclipse 用空格替换 tab键
2013/06/24 PHP
windows下PHP_intl.dll正确配置方法(apache2.2+php5.3.5)
2014/01/14 PHP
PHP实现无限级分类(不使用递归)
2015/10/22 PHP
php smtp实现发送邮件功能
2017/06/22 PHP
jQuery如何获取同一个类标签的所有值(默认无法获取)
2014/09/25 Javascript
jQuery中animate用法实例分析
2015/03/09 Javascript
18个非常棒的jQuery代码片段
2015/11/02 Javascript
Bootstrap每天必学之导航条
2015/11/27 Javascript
BootStrap扔进Django里的方法详解
2016/05/13 Javascript
Spring MVC中Ajax实现二级联动的简单实例
2016/07/06 Javascript
jQuery flip插件实现的翻牌效果示例【附demo源码下载】
2016/09/20 Javascript
JavaScript中的编码和解码函数
2017/02/15 Javascript
vue element ui validate 主动触发错误提示操作
2020/09/21 Javascript
Jquery+javascript实现支付网页数字键盘
2020/12/21 jQuery
用Python脚本生成Android SALT扰码的方法
2013/09/18 Python
《Python之禅》中对于Python编程过程中的一些建议
2015/04/03 Python
Python 中迭代器与生成器实例详解
2017/03/29 Python
python 逆向爬虫正确调用 JAR 加密逻辑
2021/01/12 Python
HTML+CSS3 模仿Windows7 桌面效果
2010/06/17 HTML / CSS
详解html2canvas截图不能截取圆角图片的解决方案
2018/01/30 HTML / CSS
HTML5中form如何关闭自动完成功能的方法
2018/07/02 HTML / CSS
CAT鞋英国官网:坚固耐用的靴子和鞋
2016/10/21 全球购物
澳大利亚女士时装在线:Rockmans
2018/09/26 全球购物
优秀的计算机专业求职信范文
2013/12/27 职场文书
细节决定成败演讲稿
2014/05/12 职场文书
公司大门门卫岗位职责
2014/06/11 职场文书
中职招生先进个人材料
2014/08/31 职场文书
大学生村官个人对照检查材料(群众路线)
2014/09/26 职场文书
推销搭讪开场白
2015/05/28 职场文书
校园开放日新闻稿
2015/07/17 职场文书
趣味运动会通讯稿
2015/07/18 职场文书
解析CSS 提取图片主题色功能(小技巧)
2021/05/12 HTML / CSS
Python用any()函数检查字符串中的字母以及如何使用all()函数
2022/04/14 Python
云服务器部署 Web 项目的实现步骤
2022/06/28 Servers
windows server2012 R2下安装PaddleOCR服务的的详细步骤
2022/09/23 Servers