1
nybux 2013-07-20 10:47:14 +08:00 1
可以搜索一下servlet 3.0的asyncservlet
|
3
itommy 2013-07-20 11:48:26 +08:00 via iPhone
没有服务器特别的配置
就是 JavaScript 去request 一个php file, 然后 file 里做 loop 就可以keep connection alive. 然后就出现了 所谓的 long polling |
4
mlhorizon 2013-07-20 12:13:17 +08:00
需要服务器端支持!
|
5
mantianyu OP @itommy 这样似乎需要服务器返回 multipart/x-mixed-replace ,否则服务器会一直等待php脚本执行完成才将输出发送到浏览器, 可是这种mime类型连ie10都不支持
|
6
mantianyu OP @itommy 说错了,应该说,“ie连第10版都不支持这种mime类型,firefox和chrome和safari和opera等就支持”
|
8
sivacohan 2013-07-20 13:43:20 +08:00 via Android
如果我没记错,comet被websocket和long polling代替了。这时个过时的技术。
|
9
mantianyu OP @sivacohan 查了很多资料,说是long polling其实是comet的一种实现方式,comet是个泛型名词
|
10
nybux 2013-07-20 17:05:36 +08:00
php和普通的servlet都是一个请求要占用一个线程或进程,long polling需要在等待条件的时候释放掉占用的线程或进程。所以以目前php的方式就算实现,也无法支撑多少用户。
long polling是从http层面看到的东西,comet和asyncservlet是一种实现。websocket需要浏览器额外支持。 采用什么方案实现longpolling,要根据你的用户量来决定。 我觉得golang是最佳的方案。在一台普通pc上可以支持上万用户。 接着是netty,async servlet,nodejs都是可选方案。我用asyncservlet测试2万用户基本已经没法用了。 |
11
lisztli 2013-07-20 19:16:34 +08:00
关键字 epoll
|
12
lisztli 2013-07-20 19:17:02 +08:00
|
13
zzNucker 2013-07-20 19:32:00 +08:00
|
14
julyclyde 2013-07-21 16:13:01 +08:00
php的话,可以用obflush
|
15
itommy 2013-07-21 17:30:58 +08:00
|