位置: 编程技术 - 正文

Node.js实现数据推送(nodejs可以直接操作数据库)

编辑:rootadmin

推荐整理分享Node.js实现数据推送(nodejs可以直接操作数据库),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:node.js操作数据库,nodejs如何实现数据库,nodejs的数据类型,nodejs可以直接操作数据库,node.js实战,nodejs如何实现数据库,nodejs的数据类型,nodejs的数据类型,内容如对您有帮助,希望把文章链接给更多的朋友!

场景:后端更新数据推送到客户端(Java部分使用Tomcat服务器)。

后端推送数据的解决方案有很多,比如轮询、Comet、WebSocket。

1. 轮询对于后端来说开发成本最低,就是按照传统的方式处理Ajax请求并返回数据,在学校的时候实验室的项目一直都采用轮询,因为它最保险也最容易实现。但轮询带来的通信资源的浪费是无法忽视的,无论数据是否改变,都照常发送请求并响应,而且每次HTTP请求都带有很长的头部信息。

2. Comet的概念是长连接,客户端发送请求后,后端将连接保持下来,直到连接超时或后端返回数据时再重新建立连接,有效的将通信资源转移到了服务器上,实际消耗的是服务器资源。

3. WebSocket是HTML5提供的一种全双工通信技术,通过“握手”实现客户端与服务器之间的通信,实时性好,携带的头部也较小,目前支持的浏览器如下:

理想的情况是采取WebSocket与Comet结合的方式,对IE8等浏览器采取Comet方式,做降级处理。但是这样一来,后端需要实现两种处理请求的逻辑,即WebSocket与Comet。所以,本文加入Node.js,之所以这样做,是将处理WebSocket(或Comet)的逻辑转移到Node.js部分,不给后端“添麻烦”,因为在实际情况下,前端开发人员推动后端开发人员并不容易。Node.js作为浏览器与Java业务逻辑层通信的中间层,连接客户端与Tomcat,通过Socket与Tomcat进行通信(是Socket,不是WebSocket,后端需要实现Socket接口。

在客户端,WebSocket与Comet通过Socket.io实现,Socket.io会针对不同的浏览器版本或者不同客户端选择合适的实现方式(WebSocket, long pull..),Socket.io的引入让处理WebSocket(或长连接)变的很容易。Socket.io

Node.js实现数据推送(nodejs可以直接操作数据库)

客户端引入socket.io:

<script src="static/js/socket.io.js"></script>客户端JavaScript代码:

Node.js服务器代码:

建立好客户端同Node.js服务器的连接只是第一步,下面还需要建立Node.js服务器与Java业务逻辑层的联系。这时,Node.js服务器则作为客户端,向Tomcat发送TCP连接请求。连接成功后,Node.js服务器和Tomcat建立了一条全双工的通道,而且是唯一的一条,不论有多少个客户端请求,都从Node.js服务器转发至Tomcat;同样,Tomcat推送过来的数据,也经由Node.js服务器分发至各个客户端。

这里存在一个问题,就是在WebSocket连接与Socket连接都建立好之后,两次连接彼此之间是屏蔽的。Tomcat不知道是哪次WebSocket连接发送过来的数据,也不知道是哪个客户端发来的数据。当然,Node.js可以利用session id发送至Tomcat来标识是哪一个客户端,但本文采用的是另外一种办法。

客户端同Node.js建立WebSocket连接时,每个连接都会包含一个实例,这里称它为socketIO。每个socketIO都有一个id属性用来唯一标识这个连接,这里称它为socket_id。利用socket_id,在Node.js服务器建立一个映射表,存储每一个socketIO与socket_id的映射关系。Node.js服务器发送数据给Tomcat时带上这个socket_id,再由Java部分进行一系列处理以后封装好每个客户端需要的不同数据一并返回,返回的数据里要有与socket_id的对应关系。这样,Node.js服务器收到Tomcat发来的数据时,通过前面提到的映射表由不同的socketIO分发至不同的客户端。

Node.js服务器代码:

上面的代码省略了一些逻辑,比如Node.js服务器从Tomcat接收的数据分为两种,一种是推送过来的数据,另外一种是响应请求的数据,这里统一处理推送过来的数据。

在处理通信时,Node.js发送至Tomcat的数据是String格式,而从Tomcat接收的数据为Buffer对象(8进制),需要转化为String之后再转化为json发送至客户端。

本文只是给出一个这样两次连接的简单例子,具体的业务中需要加入许多东西。既然在项目中引入了Node.js,就需要前端承担更多的事情,比如对数据的处理、缓存、甚至加入很多业务逻辑。

node.js连接mongoDB数据库 快速搭建自己的web服务 一、写在前面人人都想成为全栈码农,作为一个web前端开发人员,通往全栈的简洁之路,貌似就是node.js了。前段时间学习了node.js,来谈谈新手如何快速

Nodejs Stream 数据流使用手册 1、介绍本文介绍了使用node.jsstreams开发程序的基本方法。codeclass="hljsmizar""Weshouldhavesomewaysofconnectingprogramslikegardenhose--screwinanothersegmentwhenitbecomesnecessarytoma

基于 Node.js 实现前后端分离 基本介绍首先从一个重要的概念模板说起。广义上来说,web中的模板就是填充数据后可以生成文件的页面。严格意义上来说,应该是模板引擎利用特定

标签: nodejs可以直接操作数据库

本文链接地址:https://www.jiuchutong.com/biancheng/370720.html 转载请保留说明!

上一篇:node.js实现端口转发(nodejs做接口)

下一篇:node.js连接mongoDB数据库 快速搭建自己的web服务(node.js连接mysql的数据怎么可视化)

  • 会计核算职能有哪些特征
  • 公共汽车出租车
  • 培训属于什么服务行业
  • 出口货物退货需要退税吗
  • 发放遗属补助还要拍照片吗山东
  • 汇算清缴交了税怎么做分录
  • 房地产企业开发产品转固定资产
  • 粮食收购发票 票样
  • 海关未抵扣证明
  • 进口设备在海关处保存2年出售时 计算税怎么算
  • 会计中应收账款的英文
  • 用银行存款上交上月税金会计分录
  • 货物运输时发生车祸
  • 限额领料单属于什么原始凭证
  • 物业公司代收的电费差额收入
  • 股权0元转让
  • 为什么非征期不允许汇总上传
  • 增值税报表上填写什么
  • 投资性房地产收取租金增值税税率
  • 跨地区经营建筑企业预缴企业所得税
  • 科目编码首位与分类编号不符,接受此编码吗
  • 个人所得税做账怎么做
  • 以前年度损益调整在利润表中怎么填
  • 免税单位无租使用纳税单位土地
  • 预收销货款属于负债吗
  • 普通增值税发票跨越可以作废吗
  • 猫光纤信号灯闪红
  • 股票的交易费用是怎么算的
  • 失业稳岗补贴要交社保吗
  • 增值税留抵退税账务处理
  • i33240配什么主板
  • hpzts04.exe是什么进程 有什么作用 hpzts04进程查询
  • 车辆购置税退税计算
  • 企业收取租金的未开具发票的怎么计算税款
  • 出口免抵增值税是什么意思
  • laravel 更新数据
  • 前端面试题目100及最佳答案
  • 在数组指定位置添加数据
  • 刷题是啥意思啊
  • 文本生成图像前景怎么样
  • FPN细节剖析以及pytorch代码实现
  • 自动驾驶汽车决策与控制pdf
  • 自动驾驶科普
  • 有形动产租赁个税是经营所得吗
  • 魔改是啥
  • 没有交过税怎么办
  • 固定资产折旧率如何计算
  • MySQL主从数据库搭建
  • 什么是指社会保障完全靠当前的收入
  • 预缴税金用于抵减税费
  • 事业单位收到专票的风险
  • 小规模纳税人结转增值税的账务处理
  • 影响无形资产的营业利润怎么算
  • 给保安买大衣算贿赂吗
  • 注册资本认缴与实缴有什么区别
  • 现金形式福利费个税软件怎么申报个税
  • 结转完工入库产品成本
  • 专栏设计模板
  • sql server中删除触发器用
  • fedora改密码
  • win7电脑一键关机快捷键
  • win10改win8.1
  • win7系统无法打开任务管理器
  • linux 查看磁盘io繁忙
  • 关于windows的开始菜单,叙述错误的是
  • 图片如何添加到word文档
  • win10专业版装不上m1136驱动
  • 低分辨率调高分辨率会模糊吗
  • windows7默认网关不可用
  • android Unable to execute dex问题的解决
  • Unity3d-四元数到矩阵的实现
  • jquery中给指定元素添加样式
  • javascript的dom
  • unity网络通信框架
  • 浏览器兼容性问题是什么意思
  • 泉州企业医保哪里缴费
  • 建筑工程异地预缴税款时间限制
  • 陕西省附加税减免政策
  • 郑州国税发票查询系统
  • 幼儿掌握概念的名称容易真正掌握概念的内涵也很容易
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设