又要做一个聊天系统……想到之前一直用的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篇一样的……真他妹的!