php - Facebook 直播功能?

标签 php javascript jquery mysql ajax

我正在尝试制作类似 facebook 实时提要的内容,例如:当有人喜欢某事或对某事发表评论时,页面会更新而不刷新!我想知道这样做的正确方法是什么?问候

最佳答案

Web 应用程序中的实时更新是一个难题,因为处理许多同时存在的长期 TCP 连接的单个服务器是一个 hard problem .

这在像 Apache + PHP 这样的传统网络服务器上基本上是不可能的,因为它分配了整个操作系统 thread对于每个传入连接。线程有很大的开销(比如 stack space 需要大约 2 MB 的 RAM,加上您的应用程序需要的任何堆内存),因此同时打开您的页面的几百个客户端可以将一个小型服务器带到它的膝盖,即使是一个超大(而且非常昂贵)的 100 GB RAM 服务器也只能处理几千个并发连接。

实时通信是Node真的很闪耀其单线程、事件驱动的架构可以轻松支持2,000商用笔记本电脑上的并发连接,因为每个传入连接都是一个小的(几千字节)堆分配。限制因素实际上变成了 CPU 和底层操作系统的 TCP 堆栈。

我的建议是看一下 Node——这正是它设计的目的。您已经了解 JavaScript,所以这实际上只是 API 和掌握 Node 的异步、事件驱动特性的问题。

您可能想要使用 Express满足您的 HTTP 服务器需求并使用 Socket.io用于实时通信。

Socket.io 特别棒,因为它的客户端库抽象出了跨浏览器支持的所有苦差事:

  • A-grade browsers , 它通过 WebSockets 连接到您的服务器.这将为您提供一个无限期保持连接的 TCP 套接字,您可以随时通过该套接字推送任意数据。
  • 在下层浏览器中,它使用回退机制:
    • 基于 Flash 的传输,如 WebSockets,但需要 Flash 播放器(如果可用)
    • AJAX long polling
    • 还有一些esoteric如果这些都不起作用,则回退

关于php - Facebook 直播功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9136941/

相关文章:

javascript - 如何制作移动响应垂直范围 slider

jquery - 使用 jquery 在列上添加颜色

php - 在 WooCommerce 中批准订单时向客户添加订单备注

javascript - 如何在Dart中实现Node.js类似功能的缓冲区

javascript - 使用 event.preventDefault 单击不触发引导模式按钮

javascript - 谷歌地图 - 使用map.fitBounds(边界);

javascript - Cakephp 2.4 JSHelper 确认使用 Dialog 而不是 Javascript 确认

php - html 无法摆脱 top margin

php - Cron 不执行 shell 脚本..但从命令行工作

php - 单个页眉和页脚文件