如何在facebook ticker,meetup.com主页等浏览器中显示连续的实时更新?在 python,PHP,node.js以及服务器端的性能影响是什么?
如果页面被像akamai这样的CDN缓存,我们怎么能实现相同的更新呢?
您有两种选择(其他人已在上面详述).如果您不熟悉每个选项背后的一些概念性想法,我想我会给出一两行关于它们的内容.请注意,我在非常非常高的层次上展示了这些概念.

你的三个选择是:

>短轮询
> Web Socket
> Comet / Long-Polling

短轮询

短轮询通过强制客户端不断向表单的服务器发送请求来克服Client-Server之间的单向通信:

Client: Do you have a message for me?
Server: No.
Client: (wait x seconds)
Client: Do you have a message for me?
Server: No.
Client: (wait x seconds)
Client: Do you have a message for me?
Server: Yes. Here it is!
Client: Yay!
Client: (update message)

代表客户的不断唠叨称为轮询.为了实现此结构,您需要将服务器设置为“侦听”来自客户端的这些轮询请求.服务器还必须在某处存储这些消息,以便在消息准备就绪时,服务器可以提供它们.在非常简单的级别,您的服务器需要:

>接受一般Web请求
>接受轮询请求
>运行获取消息的后台作业
>将这些消息存储在某处,以便在轮询请求进入时,服务器可以检查它们.

您还需要将这些轮询请求绑定到用户的某种会话ID,以便正确的消息到达正确的人.总的来说,范式很复杂,在我看来,效率低下.

Web套接字

Web套接字是HTML5的新增功能.它们背后的基本思想是客户端可以保持与服务器的直接连接,并且可以相互推送信息.因此,而不是通常:客户端发送GET请求>>服务器响应内容,Web套接字允许您保持持续对话.

但是,为了进行此设置,您需要:

>符合WebSocket的浏览器(并非所有浏览器都是).
>可以处理Web套接字的服务器(不确定如何清楚地说明这一点,但并非所有服务器都设置为这种安排).

设置有点复杂,虽然比长轮询更简单:

>客户端维护与启用Web-Socket的连接到Server的连接
>服务器通过Web套接字将结果推送到客户端
>根据结果更新客户端页面

你会看到这种模式被称为推送通知(当然,如果你拥有一台你已经体验过的iPhone),因为服务器已被授权将“东西”推送给客户端(多么不礼貌!).由于存在许多客户端和服务器的细微差别,我建议测试像Pusher这样的东西,它基本上是一个Web服务来处理Web套接字的所有难点部分.在开始自己设置之前,这将是一种简单的方法,您可以测试和玩模式.它有客户端和服务器端库.

希望信息为您提供解决问题的基准.其他答案有关于如何解决每个方案的更直接信息.

彗星/长轮询

另一种看似跨浏览器的Web套接字方法是Long-Polling(见Comet).在这种情况下,您的客户端建立与服务器的连接并使其挂起,等待数据被推回.这种设置有点复杂,但它确实代表了短轮询和Web套接字之间的中间地带.

php – 如何显示连续的实时更新,如facebook ticker,meetup.com主页呢?的更多相关文章

  1. html5 http的轮询和Websocket原理

    这篇文章主要介绍了html5 http的轮询和Websocket原理的相关资料,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  2. Swift开发:GCDAsyncSocket通信之TCP服务器

    overridefuncviewDidLoad(){super.viewDidLoad()clientSockets=NSMutableArray()msgTextView.backgroundColor=UIColor.grayColor()msgTextView.text="接收的客户端消息:\n"}//发送消息按钮@IBActionfuncsendBtnClick{ifclientSockets.count==0{return}letmsg=inputTextInput.text!//1.处理请求,

  3. 如何将android客户端连接到我的笔记本电脑内的Apache服务器(php)的localhost?

    我的笔记本电脑中的localhost-127.0.0.1或android10.0.0.1中的localhost?>那么,如果我想从android访问localhost来调用PHP来运行?哪个ip地址/url我需要放在Android应用程序?我需要在httpconfig中为XAMPP修改任何内容吗?解决方法使用ipconfig在笔记本电脑中找到您的IP地址.在手机中使用该地址而不是127.0.0.1.

  4. android rest客户端不支持的媒体类型

    我尝试从android模拟器发送请求到一个安静的服务器.但我总是得到错误:415UnsupportedMediaType.客户代码:服务器的代码:解决方法问题是服务器不知道客户端请求的媒体类型.在客户端代码中尝试这样的事情:request.setHeader(“Content-Type”,“application/json”);

  5. 什么是Windows最好的免费脚本化SFTP客户端?

    我看过WinSCP和FileZilla.WinSCP看起来相当buggy,FileZilla似乎不是很易编写脚本.有什么建议?基本上我想要做的是:从计划任务,登录到远程服务器,拉过任何文件,然后从远程服务器中删除它们.您可以使用puttypscp附带的scp客户端.您可以在命令行中使用pscp,如linux命令行中的scp.

  6. windows – lua socket客户端

    我正在从LuaSocket页面为Socket服务器示例做一个简单的lua套接字客户端.服务器部分工作虽然,我尝试用telnet.但是客户端部分不工作.它只应该连接到它,发送一些数据并收到一些返回.有人能帮我解决吗?您的服务器可能每行接收.如receive文档所述,这是默认的接收模式.尝试在您的客户端消息中添加换行符.这完成了服务器上的接收:

  7. centos – NTP客户端配置的最佳选择

    让我们看看是否有人可以对这个问题有所了解……我将在接下来的几天内安装服务器.我的客户希望部署一台HortonworksHDP,其中包含2台服务器作为主服务器和5台工作服务器.所有这些要求之一是要启用NTP.但这就是我所拥有的所有信息,他没有告诉我他是否希望本地服务器充当NTP服务器,或者希望所有7个服务器充当客户端.操作系统将是Centos6.6或6.7.所以我的问题是:考虑到这不是一个生产环境,而更像是一个“测试”环境,你可以选择在这些机器上配置NTP吗?

  8. centos – 调整NFS客户端/服务器堆栈

    只是为了澄清,你通过单个Gb以太网连接获得50MB/秒的NFS?并且主机服务器正在运行安装了VMwareServer的CentOS,而后者又运行7个虚拟机?有没有特别的原因你已经将CentOS和VMwareServer结合起来,而不是VMwareESXi这是一个更高性能的解决方案?

  9. ubuntu – Linux文件服务器上有哪些病毒扫描程序?

    我们在一个服务于大约8个Windows客户端的小型网络中有一个Ubuntu文件服务器.首先,是否有必要在服务器上安装病毒扫描程序,或者只依赖客户端?如果最好在文件服务器上进行病毒扫描,那么LinuxSamba服务器的扫描程序是什么?ClamAV一般被认为是合理的反病毒.虽然说它没有heustics.但它确实具有按访问扫描功能.

  10. 从macOS客户端在Ubuntu Linux服务器上挂载NFS卷

    我有一个Ubuntu14.04LTS服务器.如何使用NFS从MacOSXYosemite客户端在Linux服务器上安装目录?设置Linux服务器>按照UbuntuNFSguide安装NFS服务器:>编辑/etc/exports:现在添加一行类似于:>/home/ubuntu是要导出的目录>172.16.238.0/24是接受来自的连接的IP地址.Mac客户端的IP地址应在此范围内.使用*允许来自任何IP地址.(但要注意不要让你的NFS服务器可用于整个互联网!

随机推荐

  1. PHP个人网站架设连环讲(一)

    先下一个OmnihttpdProffesinalV2.06,装上就有PHP4beta3可以用了。PHP4给我们带来一个简单的方法,就是使用SESSION(会话)级变量。但是如果不是PHP4又该怎么办?我们可以假设某人在15分钟以内对你的网页的请求都不属于一个新的人次,这样你可以做个计数的过程存在INC里,在每一个页面引用,访客第一次进入时将访问时间送到cookie里。以后每个页面被访问时都检查cookie上次访问时间值。

  2. PHP函数学习之PHP函数点评

    PHP函数使用说明,应用举例,精简点评,希望对您学习php有所帮助

  3. ecshop2.7.3 在php5.4下的各种错误问题处理

    将方法内的函数,分拆为2个部分。这个和gd库没有一点关系,是ecshop程序的问题。会出现这种问题,不外乎就是当前会员的session或者程序对cookie的处理存在漏洞。进过本地测试,includes\modules\integrates\ecshop.php这个整合自身会员的类中没有重写integrate.php中的check_cookie()方法导致,验证cookie时返回的username为空,丢失了登录状态,在ecshop.php中重写了此方法就可以了。把他加到ecshop.php的最后面去就可

  4. NT IIS下用ODBC连接数据库

    $connection=intodbc_connect建立数据库连接,$query_string="查询记录的条件"如:$query_string="select*fromtable"用$cur=intodbc_exec检索数据库,将记录集放入$cur变量中。再用while{$var1=odbc_result;$var2=odbc_result;...}读取odbc_exec()返回的数据集$cur。最后是odbc_close关闭数据库的连接。odbc_result()函数是取当前记录的指定字段值。

  5. PHP使用JpGraph绘制折线图操作示例【附源码下载】

    这篇文章主要介绍了PHP使用JpGraph绘制折线图操作,结合实例形式分析了php使用JpGraph的相关操作技巧与注意事项,并附带源码供读者下载参考,需要的朋友可以参考下

  6. zen_cart实现支付前生成订单的方法

    这篇文章主要介绍了zen_cart实现支付前生成订单的方法,结合实例形式详细分析了zen_cart支付前生成订单的具体步骤与相关实现技巧,需要的朋友可以参考下

  7. Thinkphp5框架实现获取数据库数据到视图的方法

    这篇文章主要介绍了Thinkphp5框架实现获取数据库数据到视图的方法,涉及thinkPHP5数据库配置、读取、模型操作及视图调用相关操作技巧,需要的朋友可以参考下

  8. PHP+jquery+CSS制作头像登录窗(仿QQ登陆)

    本篇文章介绍了PHP结合jQ和CSS制作头像登录窗(仿QQ登陆),实现了类似QQ的登陆界面,很有参考价值,有需要的朋友可以了解一下。

  9. 基于win2003虚拟机中apache服务器的访问

    下面小编就为大家带来一篇基于win2003虚拟机中apache服务器的访问。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  10. Yii2中组件的注册与创建方法

    这篇文章主要介绍了Yii2之组件的注册与创建的实现方法,非常不错,具有参考借鉴价值,需要的朋友可以参考下

返回
顶部