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