Facebook直播功能
Facebook live feed functionalty?
我正在尝试制作类似于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实时框架。
查看
相关文章:
- 添加文字和评论功能更新Div
- JavaScript打印功能使日历停止工作
- 每当您在选择器内移动鼠标时,悬停功能就会重复
- 将电视直播频道从网站嵌入我的网站
- 如何防止网页加载后自动启动功能
- 除修剪外的其他功能
- 悬停功能触发器
- 使用angularjs向浏览器发送servlet响应(下载功能)
- 删除CKEditor工具栏按钮,但不删除功能
- 异步facebook功能
- 如何将chrome扩展功能移植到移动设备(特别是jquery和trello)
- jQuery滚动功能只工作一次
- Graphiti中是否有任何工具提示功能
- React redux初始化功能,无论状态变化如何
- 在哪里可以学习ECMAScript标准中尚未包含的JavaScript功能
- 正在获取select上的功能id
- Rhino打印功能
- 使用(navigator.geolocation)检测浏览器功能错误
- 主体单击删除功能上的输入框宽度
- Facebook直播功能