相关疑难解决方法(0)

什么是长轮询,Websockets,服务器发送事件(SSE)和Comet?

我曾尝试阅读一些文章,但我对这些概念还不是很清楚.

有人愿意尝试向我解释这些技术是什么:

  1. 长轮询
  2. 服务器发送的事件
  3. 的WebSockets
  4. 彗星

我每次遇到的一件事是,服务器保持连接打开并将数据推送到客户端.如何保持连接打开,客户端如何获取推送数据?(客户端如何使用数据,也许某些代码可能会有帮助?)

现在,我应该将其中哪一个用于实时应用.我一直听说很多关于websockets(有socket.io [一个node.js库]),但为什么不用PHP?

php comet long-polling websocket server-sent-events

1005
推荐指数
4
解决办法
17万
查看次数

使用PHP的彗星?

我正在考虑使用PHP后端实现实时聊天,但我在讨论彗星的网站上遇到了这个评论:

我的理解是,对于Comet来说,PHP是一种可怕的语言,因为Comet要求你保持对每个浏览器客户端的持久连接.使用mod_php这意味着为每个不完全扩展的客户端占用Apache全职儿童.我认识Comet的人大多使用Twisted Python,它可以处理数百或数千个同时连接.

这是真的?或者是可以配置的东西?

php comet

82
推荐指数
5
解决办法
5万
查看次数

服务器可伸缩性 - HTML 5 websockets与Comet

Caplin等许多Comet实现都提供了服务器可扩展的解决方案

以下是Caplin网站的统计数据之一:

Caplin解释器的单个实例可以支持多达100,000个客户端,每个客户端每秒接收1条消息,平均延迟小于7毫秒.

如何与任何网络服务器上的HTML5 websockets进行比较?任何人都可以指向任何HTML 5 websockets统计信息?

html5 push comet websocket

28
推荐指数
3
解决办法
3万
查看次数

如何在PHP中实现事件监听

这是我的问题:我有一个脚本(让我们称之为comet.php)由AJAX客户端脚本提供,并等待更改发生如下:

while(no_changes){
    usleep(100000);
    //check for changes
}
Run Code Online (Sandbox Code Playgroud)

我不太喜欢这个,它不是很可扩展,它是(imho)"糟糕的做法"我想用信号量(?)或无论如何并发编程技术来改善这种行为.你能告诉我一些如何处理这个问题的技巧吗?(我知道,这不是一个简短的答案,但一个起点就足够了.)

编辑:LibEvent怎么样?

php concurrency semaphore comet reverse-ajax

7
推荐指数
1
解决办法
5910
查看次数