可能重复:
ASP.NET的Comet实现?
我正在考虑建立一个实时聊天网站,但在开始之前遇到了一些问题.
首先,我们希望能够在一个对话中同时拥有多个人,同时进行多个对话.
经过一些研究,很多人建议进行长时间的民意测验.可扩展性听起来像一个问题,似乎每个用户将在服务器上等待连接,并且每个连接使用自己的线程.当有多个用户时,这可能会导致性能问题.大多数时候,当我读到这个时,他们指的是Apache作为服务器.IIS(6或7)会遇到同样的问题吗?在遇到问题之前,IIS可以处理多少用户?
在IIS上使用ajax进行长轮询是创建实时聊天网站的一个很好的选择,还是有一个不同的服务器可以更好地处理连接?还有其他我们应该研究的东西吗?
我使用PHP/MySQL开发了一个使用彗星技术的应用程序,主要是长轮询.概念验证工作得很好,但我希望流量可以快速到达成千上万的同时连接=网络服务器上的数千个开放连接.
我没有能力设置我自己的服务器(例如使用lighttpd),并且通常依赖简单的5美元/月PHP托管来进行其他Web项目.但是,我意识到那些不会做的伎俩,因为它们并不意味着支持如此大量的同时开放的连接.
我还有什么其他选择?我找不到任何专门用于彗星应用的主机.
谢谢
我有apache作为后端服务器,运行php脚本和nginx作为反向代理服务器,处理静态内容.一个php脚本,它给我一些进程的ID,然后执行这个过程(很长).我只需要向浏览器传递该进程的ID.
// ...
ob_start();
echo json_encode($arResult); // only this data should be passed to browser
$contentLength = ob_get_length();
header('Connection: close');
header('Content-Length: ' . $contentLength);
ob_end_flush();
ob_flush();
flush();
// then performed a long process
Run Code Online (Sandbox Code Playgroud)
(我用另一个ajax脚本检查进程的状态)
这在单独的apache下工作正常.但是当apache落后于nginx时我遇到了问题.在这种情况下,我只有在完成过程完成时才得到响应.
nginx设置:
server {
#...
proxy_set_header Connection close;
proxy_pass_header Content-Length;
#...
}
Run Code Online (Sandbox Code Playgroud)
但我仍然在FireBug中获得了Connection keep-alive.
如何让nginx立即给出apache的响应?
希望问题很清楚.
谢谢.
我想知道Google Analytics Real Time用户界面是如何工作的,技术是什么?他们是否使用来自客户端的长轮询来通过从服务器向客户端提供实时信息来使UI统计信息保持最新?我只是在网络标签上打开Chrome开发工具,https://www.google.com/analytics/realtime/bind上有无限请求 有人知道这个伎俩吗?它完美无瑕......
我正在尝试使用Netty和jQuery实现长轮询.
我让它与Chrome和Firefox一起正常工作,但Internet Explorer 8引起了我的问题.
我正在执行以下代码,该代码向我的服务器发送请求,等待直到从服务器收到响应,然后发送另一个请求.
function longPollRequest() {
$.ajax({
url: '/test-path',
type: 'GET',
success: function(data, textStatus, jqXHR) {
longPollRequest();
console.log('Received: ' + data);
}
});
}
Run Code Online (Sandbox Code Playgroud)
但是,在IE8中,我遇到了一个无限循环,这会冻结浏览器.有趣的是,我的服务器只接收来自IE的第一个请求.对于发生的事情,我真的很困惑.如果有人有任何想法我会非常感谢你的帮助.
我使用PHP,JS,HTML,CSS.如果这是最好的选择,我愿意学习ruby或python.
我的下一个项目将涉及从服务器向用户提供实时数据,反之亦然.我在共享服务器上有shell访问权限,但我不确定访问端口.是否可以在共享主机帐户上使用websockets或任何其他有效的服务器 - 客户端连接,如果是这样,我需要做什么?
长轮询和http Keep-Alive之间究竟有什么区别?不存在http Keep-Alive解决了长轮询解决的问题吗?
我开始开发一个软件,使用html + js编码的应用程序我需要使用nginx for routiong从服务器(java代码)发送此应用程序通知,并托管在AWS中.我调查了这个实时通知的主题,我在网络套接字和长轮询之间感到困惑 在什么情况下,AJAX长/短轮询比HTML5 WebSockets更受欢迎?
在一些文章中,我读到长轮询是一个旧的不像websocket更新更好(在什么情况下AJAX长/短轮询优先于HTML5 WebSockets?)我开始检查gmail facebook whatsapp网页的元素.我看到使用长轮询的Gmail + facebook与使用Websocket的whatsapp不同.那么为什么这些公司仍然选择使用长期投票呢? https://www.quora.com/Does-Facebook-use-WebSockets-for-any-of-their-applications-Are-they-really-useful-at-that-scale-especially-since-they-impose-一个有状态的体系结构
我正在使用nginx作为代理服务器的多处理模式下处理Odoo 8,我读了很多关于这个错误的问题,但我仍然无法解决我的问题,我认为我无法在gevent中运行odoo模式,我已经配置了nginx与longpooling位置,因为很多帖子说,我的配置如下: -
nginx配置: -
upstream odoo8 {
server 127.0.0.1:8069 weight=1 fail_timeout=0;
}
upstream odoo8-im {
server 127.0.0.1:8072 weight=1 fail_timeout=0;
}
server {
listen 80;
server_name 138.201.xx.xx;
access_log /var/log/nginx/odoo.access.log;
error_log /var/log/nginx/odoo.error.log;
location /longpolling {
proxy_pass http://odoo8-im;
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
proxy_redirect off;
# set headers
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
proxy_connect_timeout 600;
proxy_send_timeout 600;
proxy_read_timeout 600;
send_timeout 600;
}
location / {
proxy_pass http://odoo8;
proxy_next_upstream error timeout invalid_header http_500 …Run Code Online (Sandbox Code Playgroud) 我有一个使用Ajax Comet长轮询的C#ASP.Net(非MVC)项目.网页对由实现IHttpAsyncHandler的类处理的端点进行HTTP调用.
如果没有任何内容(在n秒内)报告给网页,则会发送空的HTTP响应,并重新调用网页.如果有要发送的内容,则发送更新,并且网页会处理并重新呼叫.这是非常标准的推送技术,效果很好.
现在我正在尝试使用WebAPI2,非MVC添加API端点.我有基于ApiController类的同步控制器工作.
我想为API调用设置推送技术,以便API用户不必轮询更新.
与上述方法类似,接收API端点调用,并存储上下文.如果超时到期,则呼叫返回空,呼叫者应再次呼叫.如果数据在超时内更新,则数据将返回给调用者,然后调用者将再次调用并等待更多更新.
问题是似乎没有ApiController的异步版本.目的是释放处理API调用的线程,将其返回到池中,然后当有可用数据或超时到期时,使用工作线程返回响应.
如何设置ApiController,以便释放处理调用的线程,存储调用上下文,我可以在以后的某个时间点发送响应?