Maison > Questions et réponses > le corps du texte
高洛峰2017-04-11 13:04:09
目前是两种成熟的解决方案, Ajax 轮询和 Web Socket,当然推荐后者。
至于楼上说你的Web是由PHP服务端脚本开发,很遗憾Web Socket并不能与PHP建立通信
,以我的经验来看,这是错的。
我个人实践过了(线上项目和命令行的 Web Socket都是可以实现的,就是 PHP 写的), Web Socket 在 PHP 中应用完全没有问题,这基本是跟语言无关的。PHP 中的 walkerman 和 swoole 你可以看看。
或者你选择这个:http://socket.io/ 结合 redis 就可以实现。
黄舟2017-04-11 13:04:09
前端不刷新页面获得事实数据目前只有两种技术,Ajax与Web Socket。这需要对比这两种技术的区别,Ajax是完全的基于Web的数据获取技术,也就是说它能获得的数据实际上是一个Web的服务端脚本能够利用url反馈的结果,很明显很符合你当前的使用,准确的说是设计比较简单。但是Ajax技术有很大的弊端是它只能被动式获取信息,什么是被动式获取信息?和你的应用场景结合一下,温度在变化,什么时候变化?何时更新数据?很显然,前端的js脚本是不能预测的,它唯一能做的是设定一个计时器,间隔n(毫)秒获取一次数据。当次与上次数据发生改变时,即可更新图表。这样的被动式就会出现一个问题,获取间隔时间太长,难以体现“实时”数据,间隔时间太短,加载了大量无用信息(即当次与前次数据相同),因此增大了服务器的处理负担。那么,有什么更好的解决办法?当然是有的,基于前端开发的Web Socket解决了这一问题。它与服务器建立一条通信线路,无论是哪方都可以主动发出消息,接收方可以实时的回馈结果。那么为什么说这项技术不能使用在你当前的应用上?首先,你的Web是由PHP服务端脚本开发,很遗憾Web Socket并不能与PHP建立通信。你所需要的是基于服务端开发一个能够具有主动请求的服务端脚本例如Java Socket Server。具体如何搭建,本文就不会过多叙述。
**首先更正内容:在一定条件下PHP脚本是可以作为一个Socket Server让Socket与其建立连接。
在站长服务器中利用PHP脚本编写应用程序在终端编译执行时,是具备通信建立条件的,同时会占用当前服务器对外端口。
当站长对站点仅有虚拟空间的访问权限,使用PHP脚本作为Server是不可以的。**