Facebook直播功能

Facebook live feed functionalty?

本文关键字:功能 直播 Facebook      更新时间:2023-09-26

我正在尝试制作类似于facebook的实时订阅源,例如:当有人喜欢某个东西或对某个东西发表评论时,页面会在不刷新的情况下更新!我想知道哪种方法是正确的?关于

web应用程序中的实时更新是一个难题,因为一台服务器同时处理许多长期TCP连接是一个棘手的问题。

这在像Apache+PHP这样的传统web服务器上基本上是不可能的,因为它为每个传入连接分配了一个完整的操作系统线程。线程有很大的开销(比如大约2 MB的RAM用于堆栈空间,再加上应用程序所需的任何堆内存),所以只有几百个客户端同时打开你的页面,就可以让一个小型服务器崩溃,即使是一个超大(而且非常昂贵)的100GB RAM服务器也只能处理几千个并发连接。

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

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

您可能希望使用Express来满足HTTP服务器的需要,并使用Socket.io进行实时通信。

Socket.io特别棒,因为它的客户端库抽象掉了跨浏览器支持的所有繁琐工作:

  • 在A级浏览器中,它通过WebSockets连接到您的服务器。这将为您提供一个无限期保持连接的TCP套接字,您可以随时通过该套接字推送任意数据
  • 在下层浏览器中,它使用回退机制:
    • 类似WebSockets的基于Flash的传输,但需要Flash播放器(如果可用)
    • AJAX长轮询
    • 如果这两者都不起作用,还会有一些更深奥的失误

您可以使用长轮询,是的。或者,你可以开始创新,开始使用HTML5的连接功能,并实时显示你的网站。已经有几种现成的解决方案,我最喜欢的是xRTML实时框架。

查看