关于B/S如何判断浏览器断开的讨论

C/S通信模型与B/S通信模型介绍 1、客户端与服务器之间的通信模型 阅读详情

网友提出的几个方案

网友
f891379133
前台页面五分钟,自己刷新一次,所以最多只有五分钟的差错。

网友 teclogid 提出了自己的想法
    客户端通过脚本和服务器保持请求,每次请求刷新一个时 间,服务器检查这个时间,如果发现时间超过预定,则可以判断该客户端浏览器已关闭。然后对进行相应得操作。如果你想知道是那个客户端浏览器关闭,可以把会 话绑定到轮询对象中。长连接不是所有服务器都支持得,这种方式,比你的现实多了。



我的个人看法。
我首先同意这几种做法,它们也能实现这个需求,他们都通过客户端的轮询,更新服务器的最后访问时间,让服务器检测超时。我来谈谈我对这2种做法的理解

1 服务器端如何进行超时判断,启动一个后台线程进行定时轮询?循环检查每个session是否超过了间隔?
2 如果用线程,那么服务器端判断的间隔或者周期是多少,1秒,10秒,20秒..
3 如果大家都用10秒间隔,客户也能承受这个间隔,我们来看结果
  1) 我还不知道哪个服务器不支持长连接,如果你下载100G的文件,难道不行吗?中间非得断开n次?
  2) 你的每个客户端需要在10秒之内,发出新的请求,让服务器进行响应,我的则不需要
  3) 轮询操作要注意并发问题,也就是同步访问问题,你的数据得保存在application或者其它自定义全局数据结构里面,而多线程不存在这个问题
  4) 轮询属于单线程,统一处理,而长连接为多线程
  5) 客户端每次请求刷新后断开连接,可以减少占用服务器的连接数,提高并发数,但相对增加了每次请求的负担。
4 关键区别:如果要求在0.1秒内必须做出精确反应,发现连接断开要马上进行处理,我想我的多线程方案会更有效,因为浏览器很难在那么短的时间内发出10次请求的。而长连接则只需要减少发送数据的间隔就可以。

 

总结:
需求决定应用。
系统要求的判断超时的时间越短,长连接的方案优势越大,时间越长,轮询的可用性越强。具体需要根据应用做抉择。
对于一般的B/S判断,大部分聊天室和在线人数统计都是临行轮询操作的。一个人离开聊天室,不会立即更新在线列表,但IM程序(QQ/MSN)等则会相对非常精确的更新。

如果需要精确判断,我想长连接是我能想到的解决方案之一;另一个就是客户端插件,比如applet,Flash,ActiveX等使用socket进行了,不过机制和长连接没有区别。


关于B/S判断浏览器断开的问题讨论 客户端通过脚本和服务器保持请求,每次请求刷新一个时间,服务器检查这个时间,如果发现时间超过预定,则可以判断该客户端浏览器已关闭。然后对进行相应得操作。如果你想知道是那个客户端浏览器关闭,可以把会话绑定到轮询对象中。长连接不是所有服务器都支持得,这种方式,比你的现实多了。我的个人看法。我首先同意这几种做法,它们也能实现这个需求,他们都通过客户端的轮询,更新服务器的最后访问时间,让服务器检测超时。我来谈谈我对这2种做法的理解1 服务器端如何进行超时判断,启动一个后台线程进行定时轮询?循环检查每个session是否超过了间隔?2 如果用线程,那么服务器端判断的间隔或者周期是多少,1秒,10秒,20秒 立即下载

相关推荐

【汽车主动降噪】【ANC算法优化】基于深度学习的汽车主动噪声控制技术研究及Matlab实现

本文探讨了基于深度学习的汽车主动降噪(ANC)算法优化方案。针对传统FXLMS算法在应对复杂、非线性车内噪声时的局限性,文章详细解析了如何利用神经网络作为非线性建模器、深度滤波器或智能步长调节器来增强ANC系统性能,并提供了完整的Matlab仿真实战流程,展示了深度学习在提升降噪效果和收敛速度方面的潜力。

seed的博客 540

浏览器长时间不操作 页面卡死的问题

这次遇到的问题是浏览器长时间没有进行操作,导致页面卡死,但是强制刷新之后恢复正常。

qq_41938959的博客 3434

USRP B210 运行gnuradio时 FPGA固件版本冲突错误解决方法

事情起源于昨天拿到USRP后开始调试,结果整了一个下午都没解决这个问题。 昨天晚上自己思考了一下,觉得还是版本问题。 首先,uhd_find_devices和uhd_usrp_probe均可以正常运行,没有报错,固件正常加载,序列号也可看到。 teray@teray-X550JK:~$ uhd_find_devices [INFO] [UHD] linux; GNU C++ version 7.5...

斯哈研究所 4244

HTTP协议

请求头: accept:浏览器通过这个头告诉服务器,它所支持的数据类型 Accept-Charset: 浏览器通过这个头告诉服务器,它支持哪种字符集 Accept-Encoding:浏览器通过这个头告诉服务器,支持的压缩格式 Accept-Language:浏览器通过这个头告诉服务器,它的语言环境 Host:浏览器通过这个头告诉服务器,想访问哪台主机 If-Modified-Since

git@那时浮华染流年的专栏 604

ICC II 时钟树综合(CTS)前奏:从约束定义到NDR规则的全方位设置指南

本文详细介绍了ICC II中时钟树综合(CTS)的前期准备工作,包括约束定义、NDR规则设置和时钟平衡点控制等关键步骤。通过实际案例和代码示例,指导工程师如何优化时钟偏斜、插入延迟和信号质量,确保芯片设计的时序收敛和性能稳定。特别强调了非默认布线规则(NDR)在时钟网络设计中的重要性。

weixin_42530458的博客 212

在 SAP ABAP 生态中偏爱面向对象,而不是过程式堆叠

本文探讨了ABAP开发中过程式与面向对象编程的共存现状及优化方向。文章指出,虽然过程式编程在ABAP中仍广泛存在,但随着业务复杂度提升,面向对象编程在可维护性、可测试性和重构便利性方面展现出明显优势。作者建议将过程式代码作为"适配层",仅负责输入输出转换,而将核心业务逻辑封装在类中。文章通过实际案例展示了这种架构如何提高交付效率,并提供了将Function Module转化为"薄包装"的具体实现方案,强调面向对象设计在SAP Gateway和RAP等现代架构中的重要性

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 137

Domino b/s中如何显示当前在线人数的数量

b/s中如何显示当前在线人数的数量创建一个数据库,使用模板:domlog.ntf,系统自带的.数据库名字;domlog.nsf.放到数据目录下.data目录下.设置服务器文档,http协议-启用domlog.nsf,domino web引擎-会话验证-单服务器或多服务器.记住session空闲超时时间,例如n分钟.重新启动服务器.在domcfg.nsf中,创建一个视图,显示近n分钟创建的文档.这个

wangdeq的专栏 1737

分布式爬虫架构实战:Scrapy+RabbitMQ+浏览器池,百万级数据抓取成本直降60%(附架构图+源码)

任务调度瓶颈:Redis 作为消息队列,不支持复杂任务优先级,高并发下容易消息堆积,且单点故障会导致全量任务丢失;资源浪费严重:每个爬虫节点每次爬取动态页面都启动新浏览器,启动耗时3-5秒,CPU 占用率高达80%+,单机最多同时跑3个浏览器;扩展性差:新增节点需要手动同步任务队列,节点忙闲不均,无法根据任务量动态分配资源。# 从settings读取RabbitMQ配置# 注册信号:爬虫关闭时关闭RabbitMQ连接"""启动时建立RabbitMQ连接"""

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1619

B/S架构如何统计用户在线时长、在线人数?

如何统计用户在线时长、在线人数

weixin_42668169的博客 5961

Allegro如何改变线宽操作指导

用Allegro做pcb设计的时候,改变走线线宽是非常常用的功能,如下图。线宽目前是12mil,需要把线宽改成15mil。如何改变线宽操作指导。

weixin_54787054的博客 4254

安装openclaw时出现npm error code ENOENT npm error syscall spawn git报错的解决方案

本文主要介绍了安装openclaw时出现npm error code ENOENT npm error syscall spawn git报错的解决方案,希望能对使用openclaw的同学们有所帮助。 文章目录 1. 问题描述 2. 解决方案

weixin_43178406的博客 12万+

C/S模型和B/S模型

首先了解一下C/S和B/S模型,B/S模型是特殊的C/S模型。 一、C/S模型(客户/服务器模型) 1.特点 非对等相互作用,服务器有客户端不具备的硬件和软件资源、运算能力,服务器提供服务,客户请求服务。 2.客户端和服务器的数量关系 多个客户进程可以同时访问一个服务进程,一个客户进程可以同时访问多个服务器提供的服务。 3.客户端和服务器的位置关系 客户端和服务器运行...

ZWE7616175的博客 6337

【华为OD机试真题】282、求满足条件的最长子串的长度 | 机试真题+思路参考+代码分析 (C++、Java、Py、C语言、JS)

题目描述 >给定一个字符串,只包含字母和数字,按要求找出字符串中的最长(连续)子串的长度,字符串本身是其最长的子串,子串要求: >  1、只包含1个字母(a~ z,A~Z), 其余必须是数字; 2、字母可以在子 串中的任意位置; >  如果找不到满足要求的子串,如全是字母或全是数字,则返回-1

KJ.JK 1万+

B/S模式和C/S模式

B/S(Browser/Server,浏览器/服务器)模式和 C/S(Client/Server,客户端/服务器)模式是两种常见的计算机网络应用程序架构。它们在系统组成、交互方式、部署维护等方面存在显著差异。

weixin_73376914的博客 3391

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

小汤学编程之JavaEE学习day01——HTTP简介、B/S与C/S应用、连接的建立与断开、Tomcat

一、HTTP简介 1.HTTP请求报文     2.HTTP响应报文 二、B/S与C/S应用 三、连接的建立与断开 1.连接的建立(三次握手)     2.断开连接(四次挥手) 四、连接的建立与断开 1.服务器软件介绍     2.下载与安装     2.下载与安装     3.目录介绍     4.在Idea中配置Tomcat.

SoupTC的博客 271

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

B/S 架构通信原理详解

B/S 架构通信原理详解

weixin_51288065的博客 1139

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

前后端交互 B/S

B/S架构 先来了解B/S架构 B/S架构 中的B 是Browser(浏览器) S是Server(服务器) B/S架构由C/S架构改进而成 可以说是三层C/S架构 第一层是浏览器,也就是客户端,用户不需要特别安装 就可以进行操作,主要进行完成用户所需的和后端的输入输出功能,处理较少的事务逻辑。 第二层是WEB服务器,也就是服务器,主要完成客户端所需的应用逻辑,并向数据库发送数据。 第三层是数据库...

weixin_43861707的博客 1257

C/S与B/S架构深度解析:从核心原理到实战选型指南

客户端/服务器(C/S)和浏览器/服务器(B/S)架构是软件工程中两种基础且核心的系统设计模式。C/S架构基于专用客户端与服务器通过高效二进制协议(如gRPC)通信,强调本地计算、强状态管理和离线能力,适用于对性能与实时性要求极高的场景。B/S架构则以浏览器为统一客户端,基于HTTP/HTTPS等标准Web协议实现跨平台访问与无缝更新,降低了部署和维护成本。从技术价值看,C/S在复杂图形处理、高频交易等专业领域性能优势明显,而B/S在快速迭代、跨平台兼容和用户体验一致性方面更具优势。随着WebAssembl

weixin_34007886的博客 1689

B/S程序怎么判断浏览器关了?

原文:http://www.java2000.net/p11259 我想判断浏览器关了以后我要修改数据库的内容,怎么判断啊,谢谢普通情况下不行,但我们有一个技术可以做到,那就是基于 HTTP 长连接的“服务器推”技术基于长连接的服务器推技术,使用htmlfile隐藏IE浏览器正在打开网页状态的代码我说一下基本原理。你的一个页面,调用服务器的一个长连接,服务器一直向你发送数据,而不断

老紫竹的专栏 2536

PythonWeb开发基础(一)B/S开发和http协议

返回新的URL,浏览器会根据返回的 url 发起新的 request 请求。注意:url的路径只是一个“逻辑上的“路径,服务端返回给你的并不是路径指向的文件,而只需要返回。,这个内容并不需要是从一个文件中读出来的,服务端不管怎么拼出这个内容,然后返回给你都行。就表示要操作student中的001号,但是是要读取呢?前端:数据的格式化呈现,python中的format函数其实就在做这件事情。404 Not Found,网页找不到,客户端请求的资源有错。开发,基于HTTP协议,是一种特殊的CS开发。

成长之路 1661

笔记:JAVA WEB 入门(c/s架构、b/s架构、http协议工作原理)

c/s架构、b/s架构的区别 http协议的工作原理

weixin_68132381的博客 1052

网站判断网络连接断开,js判断网络连接断开,最佳实践

思路:js没有判断网络断开的直接方法,通用的方法效果不好(只要在局域网就会判断为连接,无法严格的判断是否连接互联网) 特殊方法,使用js获取一张图片(百度的logo)但不会显示它,判断是否获取成功;需要注意,一般浏览器都会有缓存(文件名相同的资源不会重复加载),所以采取措施;图片文件后添加参数(由时间生成),让浏览器认为不是同一张图片。 话不多说,上代码 window.onload = function () { //网页加载完成便运行 var nextValue = true; //用于决定是否下

Deng_Xian_Sheng的博客 1581
上一篇: 分享一个DB2 UDB Server的结构图
下一篇: 做好面试前的准备工作
老紫竹
博客等级 码龄19年 1万+粉丝 1252原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值