简单的,基于长连接的小例子

来源:互联网 发布:俄罗斯海军现状知乎 编辑:程序博客网 时间:2024/05/01 08:01

又要做一个聊天系统……想到之前一直用的ajax,每隔5秒啊啥的,就去服务器刷一下看看有没有新的聊天,相当的浪费资源……于是搜了下资料,网上倒是很多comet的东西,不过找半天给的例子怎么看都不胃口,有点看不下去……好吧,本来一直懒得再看的,今天终于不得不大规模百度+GOOGLE了……

 

看了半天,原来发现,竟然是这么简单……网上的文章太乱了,扯东扯西,扯得人不想看。

 

按自己的理解稍微说一下吧……

 

 

注:以下链接里的这篇也是长连接,用的不是ajax,而是动态添加script的方式。

ajax不可以跨域,而动态script可以

http://blog.csdn.net/guoerwei/archive/2011/06/10/6535389.aspx

 

 

1、跟客户端基本没啥关系,会ajax就差不多了,思路跟之前有些不同而已。

这就是a.html的内容上面这段js其实就是一个很普通的ajax

我用js传入了一个时间戳,表示本次读取的时间,发送到b.php去读。

与普通ajax聊天最大的区别其实就是在获取到聊天信息后,又去执行一次test();表示下一轮开始

 

 

2、服务器端用的PHP

 

非常短,只是一直死循环而已。

 

 

 

3、于是,访问a.html吧,用firebug看的话,在网络那一栏里有一个GET b.php?time=xxx一直在等待

每次文件test.txt被修改时,b.php就会返回给a.html最新的信息

 

 

 

当然,这仅仅只是实现了最基础的功能……具体要改进的还有非常多。

比如,JS里的时间戳目前取的是本地时间,实际上用户的电脑时间不一定准确,所以应该传入服务器端时间,以服务器端时间为准

比如,不用文本了,用memcached,redis啥的来提高效率

比如,用nginx的http_push_module来减轻服务器负担

 

 

具体的,等做完吧……

 

顺便,再次BS一下现在的各种采集……

自己写不出东西来,到处去扒,专扒问题,不扒答案。有代码的都把代码扒得七零八落,各种标点、空格被替换。最后结果,百度GOOGLE啥鸟的一个搜索下去,10篇8篇一样的……真他妹的!

原创粉丝点击