海天建设集团公司网站单人做网站

bicheng/2026/1/22 3:00:55/文章来源:
海天建设集团公司网站,单人做网站,网页游戏平台51,石家庄新闻头条新闻最新今天场景#xff1a;后端更新数据推送到客户端(Java部分使用Tomcat服务器)。后端推送数据的解决方案有很多#xff0c;比如轮询、Comet、WebSocket。1. 轮询对于后端来说开发成本最低#xff0c;就是按照传统的方式处理Ajax请求并返回数据#xff0c;在学校的时候实验室的项目一…场景后端更新数据推送到客户端(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客户端引入socket.io客户端JavaScript代码var socket io.connect(127.0.0.1:8181);// 发送数据至服务器socket.emit(fromWebClient, jsonData);// 从服务器接收数据socket.on(pushToWebClient, function (data) {// do sth.});Node.js服务器代码var http require(http),app http.createServer().listen(8181),io require(socket.io).listen(app);io.sockets.on(connection, function (socketIO) {// 从客户端接收数据socketIO.on(fromWebClient, function (webClientData) {// do sth.});// 客户端断开连接socketIO.on(disconnect, function () {console.log(DISCONNECTED FROM CLIENT);});// 向客户端发送数据socketIO.emit(pushToWebClient, jsonData);});建立好客户端同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服务器代码:var http require(http),net require(net),app http.createServer().listen(8181),io require(socket.io).listen(app),nodeServer new net.Socket();// 连接到TomcatnodeServer.connect(8007, 127.0.0.1, function() {console.log(CONNECTED);});// 存储客户端的WebSocket连接实例var aSocket {};// 同客户端建立连接io.sockets.on(connection, function (socketIO) {// 从客户端接收数据然后发送至TomcatsocketIO.on(fromWebClient, function (webClientData) {// 存储至映射表aSocket[socketIO.id] socketIO;// 发送至Tomcat的数据中添加socket_idwebClientData[sid] socketIO.id;// 发送String类型的数据至TomcatnodeServer.write(JSON.stringify(webClientData));});// 客户端断开连接socketIO.on(disconnect, function () {console.log(DISCONNECTED FROM CLIENT);});});// 从Tomcat接收数据nodeServer.on(data, function (data) {var jsonData JSON.parse(data.toString());// 分发数据至客户端for (var i in jsonData.list) {aSocket[jsonData.list[i][sid]].emit(pushToWebClient, jsonData.list[i].data);}});上面的代码省略了一些逻辑比如Node.js服务器从Tomcat接收的数据分为两种一种是推送过来的数据另外一种是响应请求的数据这里统一处理推送过来的数据。在处理通信时Node.js发送至Tomcat的数据是String格式而从Tomcat接收的数据为Buffer对象(8进制)需要转化为String之后再转化为json发送至客户端。本文只是给出一个这样两次连接的简单例子具体的业务中需要加入许多东西。既然在项目中引入了Node.js就需要前端承担更多的事情比如对数据的处理、缓存、甚至加入很多业务逻辑。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/87984.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

大连网站设计九即问仟亿科技网站配色方案橙色

Hi,大家好我是tom,I am back.今天要给大家讲讲linux系统一些性能相关命令。 1.fdisk 磁盘管理 是一个强大的危险命令,所有涉及磁盘的操作都由该命令完成,包括:新增磁盘、增删改磁盘分区等。 1.fdisk -l 查看磁盘分区情况 Disk /dev/sda: 27.8…

沈阳建设银行网站网站定制一般价格多少

plotly3D (3d charts in Python)可以画3维图形 在做圆柱的3D装箱项目,需要装箱的可视化,但是Mesh (3d mesh plots in Python)只能画三角形,所以需要用多个三角形拼成一个圆柱(想做立…

高端网站的设计开发公司电子产品外观设计

转载自 本想试试看,结果却拿到了京东的Offer 最近,春招已经基本接近尾声了,我找了几位拿到名企Offer的粉丝,请他们总结了面试经验,近期会分批的推送给大家。希望给那些正在准备秋招的同学提供些帮助。 今天给大家分享的…

北京微信网站建设电话咨询在哪个网站做视频可以赚钱

概述 在实际业务中总有一些字段内容是逗号分隔的,然后后续业务需要扩展时就很难受; 所以一般在这种情况下都是需要建立关联表,将字段内容拆分; 当前使用mysql版本 8.0.32 拆分demo 这里要注意mysql.help_topic表的记录行数&a…

企业门户网站模板中文绿色环保网站模板

倒计时47天! 深度优先搜索——DFS 温馨提示:学习dfs之前最好先了解一下递归的思想。 DFS基础——图的遍历 仙境诅咒 问题描述 在一片神秘的仙境中,有N位修仙者,他们各自在仙境中独立修炼,拥有自己独特的修炼之道…

网站免费建站性盈盈影院重庆网站推广哪家好

有时候一道大水题,因为英文描述可能有点复杂或者其它云云, 就比如那道PRO。。 别先被一道题吓一跳,,, 英文描述看深入一点总归会能解决的,尽可能多的考虑情况。大胆尝试。转载于:https://www.cnblogs.com/c…

有没有如何做网站的书深圳wap网站建设

目录 Java后端接收数据 第一章、后端不写任何注解情况下接收参数1.1)后端不写注解postman发出get请求1.2)后端不写注解postman发出post请求 第二章、后端写RequestParam注解接收参数2.1)postman发出post请求2.2)postman发出get请求…

rdm响应式网站开发app外包平台大概多少钱

目录 键盘上三个特殊的键 Print Screen(或 Prt Scn) Scroll Lock(或 Scr Lk) Pause/Break ​​​​​​​ 键盘上三个特殊的键 通过前几期的文章,我们已经讨论了几乎所有可能要用到的键。但为了真正彻底地了解键盘&…

贵州住房和城乡建设部网站棒的网页设计

🍎个人博客:个人主页 🏆个人专栏:JAVA ⛳️ 功不唐捐,玉汝于成 目录 前言 正文 关键特性和操作包括: 提交任务: 查询完成状态: 等待结果: 取消任务&#xff1a…

做橡胶应该看什么网站英文网站设计公司

前言:这一节设想完成的功能为进入小程序后请求授权信息,用户授权登录后,弹出宠物登记页面,并根据宠物类型播放背景音乐 小程序昵称头像在之前的版本获取规则为触发后弹出用户授权弹窗,授权后可直接获取用户头像和昵称&…

化妆品电商网站模板开个广告公司大概需要多少钱

文章目录 前言版本说明测试 Demo1、自定义过滤器 DemoFilter2、自定义业务异常 ServiceException3、自定义异常处理类 DemoExceptionHandler4、DemoController5、请求测试 问题分析1、日志打印记录2、Debug 方法 解决方案1、修改自定义过滤器2、请求测试 解决方案分析1、日志打…

金山网站建设推广什么网站管理系统好

Docker安装 安装CentOS 7 VirtualBox安装CentOS 7,网络设置为桥接网卡,确保虚拟机能访问外网,且宿主机与虚拟机能相互ping通 安装docker yum update -yyum install -y yum-utils device-mapper-persistent-data lvm2yum-config-manager -…

那里做网站最好东莞四网合一网站建设

C设计模式是一套被广泛认可的用于解决常见对象导向设计问题的最佳实践。设计模式可以帮助开发者编写更加清晰、可维护和可扩展的代码。设计模式通常分为三大类:创建型、结构型和行为型。下面,我将分别介绍这三类设计模式的概念、应用场景和C实现示例。 …

企业网站php源码各大手机官网

20%的商品贡献了80%的销售金额,你会不会想知道这些商品的销售金额、毛利、销售金额累计占比、毛利累计占比,会不会想知道这些商品在各个门店的销售表现?看是否能进一步提高销售金额,提高毛利。这样的报表该怎么做?奥威…

东莞企业网站公司更改wordpress链接数据库

前言:目前市面上有挺多JAVA的日志框架,比如JUL(JDK自带的日志框架),Log4j,Logback,Log4j2等,有人可能有疑问说还有slf4j,不过slf4j不是一种日志框架的具体实现,而是一种日志门面(日志门面可以理解为是一种统…

网站设计与开发专业网站怎么做微信分享

目录 ZooKeeper 的定义ZooKeeper 的特点ZooKeeper 的应用场景你觉得Zookeeper比较重要的功能ZooKeeper 的选举机制 ***zookeeper主节点故障,如何重新选举?ZooKeeper 的监听原理 ***zookeeper集群的节点数为什么建议奇数台 ***ZooKeeper 的部署方式有哪几…

大连住房和城乡建设部网站seo专员工作容易学吗

今天和大家分享多图表动态切换的原型模板,点击不同的图标可以动态切换对应的表,包括柱状图、条形图、饼图、环形图、折线图、曲线图、面积图、阶梯图、雷达图;而且图表数据可以在左侧表格中动态维护,包括增加修改和删除&#xff0…

网站认证费怎么做分录家装设计网站大全

1.多进程 引入目的:让多个任务实现并发执行 并发执行:同一时间只有一个进程执行,通过时间轮询调度多个进程,由于时间每个进程所用时间极短,所以宏观表现为多个进程同时进行。 并行执行:多个任务器执行多…

平凉网站建设平凉自我介绍网页制作html

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、力扣270. 最接近的二叉搜索树值二、力扣404. 左叶子之和三、力扣617. 合并二叉树四、力扣623. 在二叉树中增加一行 前言 二叉树的递归分为「遍历」和「分解…

网站代理备案价格网站备案的坏处

IDEA中搜不到插件有三种解决方案: 设置HTTP选项,可以通过File->Settings->Plugins->⚙->HTTP Proxy Settings进行设置 具体可参考这篇博文:IDEA Plugins中搜索不到插件解决办法本地安装,ile->Settings->Plugin…