使用php+swoole对client数据实时更新(一)

 更新时间:2016年01月07日 11:46:44   作者:hello大雄  
这篇文章主要介绍了使用php+swoole对client数据实时更新(一) 的相关资料,需要的朋友可以参考下

如果想对一个列表做实时的更新,传统的做法是采用轮询的方式。以web为例,通过Ajax定时请求服务端然后获取数据显示在页面。这种方式实现简单,缺点就是浪费资源。

HTTP1.1新增加了对websocket的支持,这样就可以将被动展示转变为主动通知。也就是通过websocket与服务端保持持久链接,一旦数据发生变化,由server通知client数据有更新,然后再进行刷新等操作。这样就省去了很多不必要的被动请求,节省了服务器资源。

要实现一个webscoket的程序,首先需要使用支持html5的浏览器

if(ws === null){
var wsServer = 'ws://'+ location.hostname +':8888';
ws = new WebSocket(wsServer);
ws.onopen = function(){
console.log("socket连接已打开");
};
ws.onmessage = function(e){
console.log("message:" + e.data);
};
ws.onclose = function(){
console.log("socket连接已断开");
};
ws.onerror = function(e){
console.log("ERROR:" + e.data);
};
//离开页面时关闭连接
$(window).bind('beforeunload',function(){
ws.close();
}
);
} 

这样就实现了一个client,不过事情还远没有结束。上面的代码只是简单的进行了连接,对话,关闭等基本动作。如果想和服务端进行通讯,必须要有更具体的方案。比如收到message时判断类型进行进一步操作。

服务端:此处采用Swoole进行php服务端的websocket开发,使用swoole进行php的websocket开发非常简单,而且它还支持httpserver的支持。

$server = new swoole_websocket_server("0.0.0.0", 8888);
$server->on('open', function (swoole_websocket_server $server, $request) {
echo "server: handshake success with fd{$request->fd}\n";
});
$server->on('message', function (swoole_websocket_server $server, $frame) {
echo "receive from {$frame->fd}:{$frame->data},opcode:{$frame->opcode},fin:{$frame->finish}\n";
$server->push($frame->fd, "this is server");
});
$server->on('close', function ($ser, $fd) {
echo "client {$fd} closed\n";
});
$server->start();

swoole是一个php的扩展,安装方式可以参考这里:php安装swoole扩展的方法

本文先写到这里,下一篇会写一些更具体的操作,感兴趣的朋友请继续关注本站。谢谢!

相关文章

  • php实现window平台的checkdnsrr函数

    php实现window平台的checkdnsrr函数

    这篇文章主要介绍了php实现window平台的checkdnsrr函数,PHP的自带checkdnsrr函数只在linux平台有效,本文就模拟出了一个window下可以使用的checkdnsrr函数,需要的朋友可以参考下
    2015-05-05
  • php实现评论回复删除功能

    php实现评论回复删除功能

    这篇文章主要为大家详细介绍了php实现评论回复删除功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-05-05
  • PHP一个简单的无需刷新爬虫

    PHP一个简单的无需刷新爬虫

    今天小编就为大家分享一篇关于PHP一个简单的无需刷新爬虫,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-01-01
  • PHP生成随机密码类分享

    PHP生成随机密码类分享

    这篇文章主要介绍了PHP生成随机密码类分享,生成的密码包含大小写英文字母及数字,需要的朋友可以参考下
    2014-06-06
  • laravel框架分组控制器和分组路由实现方法示例

    laravel框架分组控制器和分组路由实现方法示例

    这篇文章主要介绍了laravel框架分组控制器和分组路由实现方法,结合实例形式分析了laravel框架分组控制器和分组路由的基本定义与使用方法,需要的朋友可以参考下
    2020-01-01
  • laravel-admin解决表单select联动时,编辑默认没选上的问题

    laravel-admin解决表单select联动时,编辑默认没选上的问题

    今天小编就为大家分享一篇laravel-admin解决表单select联动时,编辑默认没选上的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-09-09
  • PHP设计模式(四)原型模式Prototype实例详解【创建型】

    PHP设计模式(四)原型模式Prototype实例详解【创建型】

    这篇文章主要介绍了PHP设计模式:原型模式Prototype,结合实例形式详细分析了PHP原型模式Prototype的基本概念、功能、原理、实现方法与操作注意事项,需要的朋友可以参考下
    2020-05-05
  • php之XML转数组函数的详解

    php之XML转数组函数的详解

    本篇文章是对php中的XML转数组函数进行了详细的分析介绍,需要的朋友参考下
    2013-06-06
  • PHP验证码生成原理和实现

    PHP验证码生成原理和实现

    验证码在表单实现越来越多了,但是用js的写的验证码,总觉得不方便,所以学习了下php实现的验证码的原理和实现,对验证码生成原理相关知识感兴趣的朋友一起学习吧
    2016-01-01
  • ThinkPHP5.1+Ajax实现的无刷新分页功能示例

    ThinkPHP5.1+Ajax实现的无刷新分页功能示例

    这篇文章主要介绍了ThinkPHP5.1+Ajax实现的无刷新分页功能,结合实例形式详细分析了ThinkPHP5.1+Ajax无刷新分页具体原理、前台数据发送与后台处理相关操作技巧,需要的朋友可以参考下
    2020-02-02

最新评论