1
zzNucker 2014-08-01 17:25:17 +08:00 1
comet / push /persistent connection
|
2
arbipher 2014-08-01 17:32:15 +08:00
你想知道有没有人给打你电话?
一种方式是定期看手机有没有来电提示(通过AJAX定期向数据库发送GET请求), 另一种更直观的方法是,听电话铃有没有响(不要笑……),你的耳朵时时刻刻在做这个工作。 你的耳朵和电话之间建立起“长连接”,“铃声”就是电话通过这个长连接推送给你的“消息”,你收到“消息”后再去看手机,到底是谁来电,是接电话还是装死。。。 简单的长连接可以通过WebSocket实现,其实这个问题之前我也是在v2ex问的(http://v2ex.com/t/103113#reply3) |
3
xiparos OP |
6
em70 2014-08-01 17:55:59 +08:00
消息数据库加个已读标记字段,默认为0,定期监听未读消息,发现有未读就推送给用户,阅读后修改标记为1
网页消息只能定期监听,没其他办法 |
7
cloudzhou 2014-08-01 17:57:22 +08:00
如果要求及时性不那么高,简单的 ajax 按照时间轮讯就可以了,比如每一分钟。
最好使用类似 redis 来做这种状态的保存。 |
8
hcy 2014-08-01 18:04:09 +08:00
简单地消息提醒还是用Server-sent Events这个好点。这个用php实现起来很简单.
不过只支持html5 https://developer.mozilla.org/en-US/docs/Server-sent_events/Using_server-sent_events |
9
xiparos OP 刚才看了一下这个:
http://stackoverflow.com/questions/603201/using-comet-with-php 感觉PHP语言本身对于Comet的支持就不是很好,只能作为client端开发用。server端的话还得用Python,Nodejs这样的语言来实现Comet或者Websocket。 |
11
raincious 2014-08-01 18:43:29 +08:00
|
13
alvin2ye 2014-08-01 21:32:07 +08:00
|
14
Jelen 2014-08-01 22:43:00 +08:00
|