导航:首页 > IDC知识 > comet服务器

comet服务器

发布时间:2020-11-29 02:37:41

1、php怎么才能实现即时通讯?

php实现实时通信一般有两种方式:socket或comet。
  socket是比较好的解决方案,问题在于不是所有的浏览器都兼容,服务器端实现起来也稍微有点麻烦。
comet(基于HTTP长连接的"服务器推")实现起来更加方便,而且兼容所有的浏览器。
comet也有好几种实现方式,如iframe, http long request等。

2、怎样提高btcomet的下载速度

网速慢的几种原因:

一、网络自身问题

您想要连接的目标网站所在的服务器带宽不足或负载过大。处理办法很简单,请换个时间段再上或者换个目标网站。

二、网线问题导致网速变慢

我们知道,双绞线是由四对线按严格的规定紧密地绞和在一起的,用来减少串扰和背景噪音的影响。同时,在T568A标准和T568B标准中仅使用了双绞线的 1、2和3、6四条线,其中,1、2用于发送,3、6用于接收,而且1、2必须来自一个绕对,3、6必须来自一个绕对。只有这样,才能最大限度地避免串扰,保证数据传输。本人在实践中发现不按正确标准(T586A、T586B)制作的网线,存在很大的隐患。表现为:一种情况是刚开始使用时网速就很慢;另一种情况则是开始网速正常,但过了一段时间后,网速变慢。后一种情况在台式电脑上表现非常明显,但用笔记本电脑检查时网速却表现为正常。对于这一问题本人经多年实践发现,因不按正确标准制作的网线引起的网速变慢还同时与网卡的质量有关。一般台式计算机的网卡的性能不如笔记本电脑的,因此,在用交换法排除故障时,使用笔记本电脑检测网速正常并不能排除网线不按标准制作这一问题的存在。我们现在要求一律按T586A、T586B标准来压制网线,在检测故障时不能一律用笔记本电脑来代替台式电脑。

三、网络中存在回路导致网速变慢

当网络涉及的节点数不是很多、结构不是很复杂时,这种现象一般很少发生。但在一些比较复杂的网络中,经常有多余的备用线路,如无意间连上时会构成回路。比如网线从网络中心接到计算机一室,再从计算机一室接到计算机二室。同时从网络中心又有一条备用线路直接连到计算机二室,若这几条线同时接通,则构成回路,数据包会不断发送和校验数据,从而影响整体网速。这种情况查找比较困难。为避免这种情况发生,要求我们在铺设网线时一定养成良好的习惯:网线打上明显的标签,有备用线路的地方要做好记载。当怀疑有此类故障发生时,一般采用分区分段逐步排除的方法。

四、网络设备硬件故障引起的广播风暴而导致网速变慢

作为发现未知设备的主要手段,广播在网络中起着非常重要的作用。然而,随着网络中计算机数量的增多,广播包的数量会急剧增加。当广播包的数量达到30%时,网络的传输效率将会明显下降。当网卡或网络设备损坏后,会不停地发送广播包,从而导致广播风暴,使网络通信陷于瘫痪。因此,当网络设备硬件有故障时也会引起网速变慢。当怀疑有此类故障时,首先可采用置换法替换集线器或交换机来排除集线设备故障。如果这些设备没有故障,关掉集线器或交换机的电源后,DOS下用 “Ping”命令对所涉及计算机逐一测试,找到有故障网卡的计算机,更换新的网卡即可恢复网速正常。网卡、集线器以及交换机是最容易出现故障引起网速变慢的设备。

五、网络中某个端口形成了瓶颈导致网速变慢

实际上,路由器广域网端口和局域网端口、交换机端口、集线器端口和服务器网卡等都可能成为网络瓶颈。当网速变慢时,我们可在网络使用高峰时段,利用网管软件查看路由器、交换机、服务器端口的数据流量;也可用 Netstat命令统计各个端口的数据流量。据此确认网络数据流通瓶颈的位置,设法增加其带宽。具体方法很多,如更换服务器网卡为100M或1000M、安装多个网卡、划分多个VLAN、改变路由器配置来增加带宽等,都可以有效地缓解网络瓶颈,可以最大限度地提高数据传输速度。

六、蠕虫病毒的影响导致网速变慢

通过E-mail散发的蠕虫病毒对网络速度的影响越来越严重,危害性极大。这种病毒导致被感染的用户只要一上网就不停地往外发邮件,病毒选择用户个人电脑中的随机文档附加在用户机子的通讯簿的随机地址上进行邮件发送。成百上千的这种垃圾邮件有的排着队往外发送,有的又成批成批地被退回来堆在服务器上。造成个别骨干互联网出现明显拥塞,网速明显变慢,使局域网近于瘫痪。因此,我们必须及时升级所用杀毒软件;计算机也要及时升级、安装系统补丁程序,同时卸载不必要的服务、关闭不必要的端口,以提高系统的安全性和可靠性。

七、防火墙的过多使用
防火墙的过多使用也可导致网速变慢,处理办法不必多说,卸载下不必要的防火墙只保留一个功能强大的足以。

八、系统资源不足

您可能加载了太多的运用程序在后台运行,请合理的加载软件或删除无用的程序及文件,将资源空出,以达到提高网速的目的。
优化你的宽带,让上网的速度成倍增长

在优化之前,可以使用“ping”来了解相关的网络参数,也可以通过使用相关的软件来检测网络速度,比如“TCP Optimizer”等。

优化注册表(最好事先备份以防万一):可修改的键值如下:MaxMT:修改最大传输单位;DefaultRcvWindow和DefaultTTL:设置传输单元缓冲区的大小值和TCP/IP分组寿命;设置DNS查询优先:提高网页的浏览速度;提高TCP/IP使用的RAM:增加TCP/IP所使用的缓冲来提高数据速率。

释放保留的带宽:先以管理员身份登录,运行命令“gpedit.msc”即可进入到“组策略”窗口。依次点击“计算机设置”、“管理模块”、“网络”、“QoS数据包调度程序”,然后在右边选中“限制可保留带宽”,右击选择“属性”,即可打开它的属性窗口,将“限制带宽”相对应的值修改为“0”,即可释放被保留的带宽。

优化软件:以TCP Optimizer为例,先点击“MaxMTU”来检查用户所用网络的相关参数,不过,我们在输入网站的地址时,最好选用当地ISP的地址,而不要使用它的缺省网址;对于“Latency PING ”也是这样。在“Settings”选项卡中,我们选择自己所使用的上网调制解调器的类型,然后在以上界面最下方选择“Optimal Setting”,再点击“Apply changes”按钮,重新启动电脑即可生效。 十分钟电脑大提速

其实电脑提速的方法有很多,但总是带有一些危险性,这也是很多人不感动手的原因。在这里我向大家介绍一种既快捷又安全的方法,以下介绍的方法只是对机器的合理设置,对机器无需任何的物理改造和复杂的第三方优化软件的使用,大家可以放心看下去。机子的设置可真多,刚开机等到内存检测完后,按下“DEL”键,此时屏幕一闪就进入了电脑的心脏:“BIOS”的设置画面。可别小看他阿,他完全控制着你的电脑,那么我们一起摘下这颗“心”吧! 在BIOS设置的首页我们进入“Advanced BIOS Features”这选项将光标移到“Frist Boot Devicd”选项,按“PageUP”和“PageDOWN”进行选择,这默认值为“Floppy”这表示启动时系统会先从软驱里读取启动信息,这在我们正常机子是很不适用的,因为现在都是Windows9x的时代了正常时已经不需要启动盘了,这样每次启动都读一下软驱是徒劳无功的,而且这样做会加长机器的启动时间,减短软驱的寿命。所以我们要选“HDD-0”直接从硬盘启动,这样启动就快了好机秒了。 返回首页选“Adranced Chipset Features”项,这选项中的设置对机子的加速影响非常大,请大家多加留意。将“Bank 0/1 DRAM Timing”从“8ns/10ns”改为“Fast”或“Turbo”。“Turbo”比“Fast”快,但不太稳定,建议选“Fast”如果内存质量好可以选“Turbo”试试,不稳定可以改回“Fast”。在往下看就到了“SDRAM CAS Latency”选项,内存品质好的最好选“2”但基于稳定性还是建议选“3”。在下一向就是“DRAM Clock”了,这项允许你将内存运行在给高的时钟频率下,“66改100”或“100改133”现在内存多数是PC133的,所以可以放心改动。都是这一句,“如果不稳定可以改会原状嘛。”(注:有的版本使用+33来表示,其实意思是一样的。)较新的主板都支持AGP4X,如果你的显卡也支持AGP4X那么就在“AGP-4XMode”处将这项激活即“Enabled”,这才会更好的发挥显卡的能力,记住如果两者都支持就不要浪费啊!(注:4X的激活不是单一的问题,而这里只不过是打开4X的先要条件,以后有机会再和大家详细分析)再下一项就是“AGP Aperture Size”这是系统调用内存作显存的数量,随着大显存的显卡的逐渐普及,这一选项已经没太大的意义了,经测试16M,32M,64M,128M四者几乎没有差别,即使16M与128M相比也不到2%的差别,所以别让太多的内存等待着那无用的任务了,尽管把他们解放出来吧,选16M或32M就足够了。其实“BIOS”里的设置还有很多,但效果已经不太明显了,所以我们先将他们放下,在此宣布“摘心行动”完满结束,选中“Save & Exit Setup”按下“Y”重启。 经过“摘心行动”后机子顺利登陆Windows,这时是否已经感到机器的启动和程序的运行都比以前快多了,但这还是满足不了我们的。因为Windows似乎不太听话,Windows的设置本身并不是最优化,我们还是自己动手将他征服吧。 刚进入Windows就见到机器一味地打开常驻程序(注:常驻程序是指开机后在开始菜单工具栏中时间显示旁的小图标,这表明只要你一开机哪些程序就会在后台全部打开)如此看来,平时不多用地的软件每次都随电脑的启动而打开,大大地占用系统资源,令电脑的性能随之而降。这时,我们只需按下“开始/ 运行/键入“msconfig” 确定/进入程序后按”启动””在这里就可以看到所有和系统一起启动的程序,只要将不想启动的程序前面的方格清空就可以了。建议将所有不用的都去掉,如“解霸,WINAMP,ICQ,OICQ”等等。为安全着想,防火墙请不要去掉。重启后,你会发现质的飞跃,再也看不到重启后硬盘灯狂闪的惨况了。真开心,哈哈! 完全进入Windows后我们就可以做以下的几项设置了: 一、启动DMA方式,提高硬盘速度 采用UDMA/33、66、100技术的硬盘最高传输速率是33MB/s、66MB/s、100MB/s,是IDE硬盘(这里是指PIO MODE4 模式,其传输率是16.6MB/s)的3~6倍,实际测试中我的UDMA/66硬盘的却比PIO MODE4 快足有3~4倍。但是在Windows里面缺省设置中,DMA却是被禁用的,所以我们必须将它打开。 启用DMA:打开“控制面板/系统/设备管理器”窗口,展开“磁盘驱动器”分支,双击UDMA硬盘的图标,进入“属性/设置/选项”,在“DMA”项前面打勾,然后按确定,关闭所有对话框,重启电脑。 二、增加高速缓存,提高CD-ROM性能 先选中“我的电脑”图标,点击鼠标右键,打开“系统属性/性能/文件系统/CD-ROM”窗口,再拖动“追加的高速缓存大小”游标至最大(最右边),将“追加的访问方式”设为“四倍数或更高速”,然后单击“确定”,重启电脑。 三、整理硬盘碎片 使用日子一长硬盘里的一个个文件就会形成碎片,如果不将这碎片整理系统的性能就会降低。整理方法:“开始/附件/系统工具”中,打开碎片整理程序,这样就能使系统的性能得到提高。(注:这项工作须时很久。) 四、提高MODEM的速度 右击“我的电脑”,打开“系统属性/设备管理器”,展开“调制解调器”分支,然后再双击你正在使用的调制解调器图标,弹出“属性”对话框,从中选择“调制解调器”项,将“最快速度”设置为115200。 在“属性”对话框中切换到“连接”项,单击“高级”按钮,在“使用流控制”复选框中选中“硬件”,再单击“确定”按钮,退出“高级”对话框。最后单击“端口设置”按钮,选中“使用FIFO缓冲区”复选框,拖动“接收缓冲区”和“传输缓冲区”游标至“高”端,单击“确定”即可。 五、使用32位文件分配表(FAT32) 如果你是WIN98的用户,要使性能发挥到最佳状态,最好使用FAT32(32位分区)。因为FAT32比FAT16快而且节省空间,兼容性也得到肯定。 使用方法:打开“资源管理器”,单击每一个驱动器的图标,选择“文件”下拉菜单,点击“属性”如果“文件系统”为FAT16模式,单击“磁盘清理程序”/“其他选项”/“转换”,就可以将FAT16模式转为FAT32了。 六、减小显卡的工作量 如果发现电脑屏幕刷新速度缓慢或有其他视频干扰,有可能是显卡的工作负荷过大造成的。事实上如果你对图片和游戏的质量并不是太执著使用32位色的话,建议使用16位色,因为这样可以减轻显卡的工作量,而且对效果并没有太大的影响。再有就是对分辨率的调整,因为过高的分辨率也会增加显卡的工作量,而且对眼睛不好。 设置方法:在屏幕窗口中,单击鼠标右键,点击“属性”选项,打开“设置”对话框,在其中进行分辨率和颜色位数的调整,直到满意为止。 七、使用图形“全部硬件加速” 如果你的显卡没有坏的话,建议你使用图形“全部硬件加速” 使用方法:右击“我的电脑”,打开“属性/性能/图形”对话框,拖动“硬件加速”游标至“全部”即可。 八、设置网络服务器 将电脑设置为“网络服务器”可使电脑的性能得到很大的提高。 设置方法:右击“我的电脑”,打开“属性/性能/文件系统”对话框,选择“此计算机的主要用途”,将下拉菜单中的“台式机”改为“网络服务器”,并拖动“预读式优化”游标至“全部”,然后单击“确定”,重启电脑。 经过以上的“摘心行动”和“征服行动”电脑的性能有了很大的提高,然而这一切并不复杂,甚至不需要十分钟,所以值得众多新手发挥自己的能力,动手试试。好了,慢慢享受加速的成果吧。

3、websocket服务器端能不能用api代替

WebSocket的出现是基于Web应用的实时性需要而产生的。这种实时的Web应用大家应该不陌生,在生活中都应该用到过,比如新浪微博的评论、私信的通知,腾讯的WebQQ等。让我们来回顾下实时 Web 应用的窘境吧。

在WebSocket出现之前,一般通过两种方式来实现Web实时用:轮询机制和流技术;其中轮询有不同的轮询,还有一种叫Comet的长轮询。

轮询:这是最早的一种实现实时 Web 应用的方案。客户端以一定的时间间隔向服务端发出请求,以频繁请求的方式来保持客户端和服务器端的同步。这种同步方案的缺点是,当客户端以固定频率向服务 器发起请求的时候,服务器端的数据可能并没有更新,这样会带来很多无谓的网络传输,所以这是一种非常低效的实时方案。

长轮询:是对定时轮询的改进和提高,目地是为了降低无效的网络传输。当服务器端没有数据更新的时候,连接会保持一段时间周期直到数据或状态改变或者 时间过期,通过这种机制来减少无效的客户端和服务器间的交互。当然,如果服务端的数据变更非常频繁的话,这种机制和定时轮询比较起来没有本质上的性能的提 高。

流:常就是在客户端的页面使用一个隐藏的窗口向服务端发出一个长连接的请求。服务器端接到这个请求后作出回应并不断更新连接状态以保证客户端和服务 器端的连接不过期。通过这种机制可以将服务器端的信息源源不断地推向客户端。这种机制在用户体验上有一点问题,需要针对不同的浏览器设计不同的方案来改进 用户体验,同时这种机制在并发比较大的情况下,对服务器端的资源是一个极大的考验。

上述方式其实并不是真正的实时技术,只是使用了一种技巧来实现的模拟实时。在每次客户端和服务器端交互的时候都是一次 HTTP 的请求和应答的过程,而每一次的 HTTP 请求和应答都带有完整的 HTTP 头信息,这就增加了每次传输的数据量。但这些方式最痛苦的是开发人员,因为不论客户端还是服务器端的实现都很复杂,为了模拟比较真实的实时效果,开发人员 往往需要构造两个HTTP连接来模拟客户端和服务器之间的双向通讯,一个连接用来处理客户端到服务器端的数据传输,一个连接用来处理服务器端到客户端的数 据传输,这不可避免地增加了编程实现的复杂度,也增加了服务器端的负载,制约了应用系统的扩展性。

基于上述弊端,实现Web实时应用的技术出现了,WebSocket通过浏览器提供的API真正实现了具备像C/S架构下的桌面系统的实时通讯能 力。其原理是使用JavaScript调用浏览器的API发出一个WebSocket请求至服务器,经过一次握手,和服务器建立了TCP通讯,因为它本质 上是一个TCP连接,所以数据传输的稳定性强和数据传输量比较小。

WebSocket 协议

WebSocket 协议本质上是一个基于 TCP 的协议。为了建立一个 WebSocket 连接,客户端浏览器首先要向服务器发起一个 HTTP 请求,这个请求和通常的 HTTP 请求不同,包含了一些附加头信息,其中附加头信息”Upgrade: WebSocket”表明这是一个申请协议升级的 HTTP 请求,服务器端解析这些附加的头信息然后产生应答信息返回给客户端,客户端和服务器端的 WebSocket 连接就建立起来了,双方就可以通过这个连接通道自由的传递信息,并且这个连接会持续存在直到客户端或者服务器端的某一方主动的关闭连接。

下面我们来详细介绍一下 WebSocket 协议,由于这个协议目前还是处于草案阶段,版本的变化比较快,我们选择目前最新的 draft-ietf-hybi-thewebsocketprotocol-17 版本来描述 WebSocket 协议。因为这个版本目前在一些主流的浏览器上比如 Chrome,、FireFox、Opera 上都得到比较好的支持。通过描述可以看到握手协议

客户端发到服务器的内容:
代码如下 复制代码

GET /chat HTTP/1.1
Host: server.example.com
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==
Origin:
Sec-WebSocket-Protocol: chat, superchat
Sec-WebSocket-Version: 13

从服务器到客户端的内容:
代码如下 复制代码

HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo=
Sec-WebSocket-Protocol: chat

这些请求和通常的 HTTP 请求很相似,但是其中有些内容是和 WebSocket 协议密切相关的。我们需要简单介绍一下这些请求和应答信息,”Upgrade:WebSocket”表示这是一个特殊的 HTTP 请求,请求的目的就是要将客户端和服务器端的通讯协议从 HTTP 协议升级到 WebSocket 协议。其中客户端的Sec-WebSocket-Key和服务器端的Sec-WebSocket-Accept就是重要的握手认证信息了,这些内容将在服 务器端实现的博文中讲解。

相信通过上文的讲解你应该对WebSocket有了个初步认识了,如果有任何疑问欢迎交流。

客户端

如概念篇中介绍的握手协议,客户端是由浏览器提供了API,所以只要使用JavaScript来简单调用即可,而服务器端是要自己实现的,服务器端将在下个博文来讲。
代码如下 复制代码
WebSocket JavaScript 接口定义:

[Constructor(in DOMString url, optional in DOMString protocol)]
interface WebSocket {
readonly attribute DOMString URL;
// ready state
const unsigned short CONNECTING = 0;
const unsigned short OPEN = 1;
const unsigned short CLOSED = 2;
readonly attribute unsigned short readyState;
readonly attribute unsigned long bufferedAmount;

// networking
attribute Function onopen;
attribute Function onmessage;
attribute Function onclose;
boolean send(in DOMString data);
void close();
};
WebSocket implements EventTarget;

简单了解下接口方法和属性:

readyState表示连接有四种状态:
CONNECTING (0):表示还没建立连接;
OPEN (1): 已经建立连接,可以进行通讯;
CLOSING (2):通过关闭握手,正在关闭连接;
CLOSED (3):连接已经关闭或无法打开;
url是代表 WebSocket 服务器的网络地址,协议通常是”ws”或“wss(加密通信)”,send 方法就是发送数据到服务器端;
close 方法就是关闭连接;
onopen连接建立,即握手成功触发的事件;
onmessage收到服务器消息时触发的事件;
onerror异常触发的事件;
onclose关闭连接触发的事件;

JavaScript调用浏览器接口实例如下:
代码如下 复制代码

var wsServer = 'ws://localhost:8888/Demo'; //服务器地址
var websocket = new WebSocket(wsServer); //创建WebSocket对象
websocket.send("hello");//向服务器发送消息
alert(websocket.readyState);//查看websocket当前状态
websocket.onopen = function (evt) {
//已经建立连接
};
websocket.onclose = function (evt) {
//已经关闭连接
};
websocket.onmessage = function (evt) {
//收到服务器消息,使用evt.data提取
};
websocket.onerror = function (evt) {
//产生异常
};

4、java中的comet是什么技术?哪里有详细介绍谢谢

Comet 是一个 Web
应用模型,在该模型中,请求被发送到服务器端并保持一个很长的存活期回,直到超时或是有服务答器端事件发生。在该请求完成后,另一个长生存期的 Ajax
请求就被送去等待另一个服务器端事件。使用 Comet 的话,Web 服务器就可以在无需显式请求的情况下向客户端发送数据。
Comet 的一大优点是,每个客户端始终都有一个向服务器端打开的通信链路。服务器端可以通过在事件到来时立即提交(完成)响应来把事件推给客户端,或者它甚至可以累积再连续发送。因为请求长时间保持打开的状态,故服务器端需要特别的功能来处理所有的这些长生存期请求。

具体你可以在IBM developerworks上搜索

与comet服务器相关的知识