使用swoole扩展php websocket示例

   2015-11-06 0
核心提示:WebSocket规范的目标是在浏览器中实现和服务器端双向通信。双向通信可以拓展浏览器上的应用类型,如果你想要用PHP来写websocket应用,那swoole_framework一定是最好的选择,需要的朋友可以参考下

复制代码 代码如下:

<?php
define('DEBUG', 'on');
define("WEBPATH", str_replace("\\","/", __DIR__));
require __DIR__ . '/../libs/lib_config.php';

class WebSocket extends Swoole\Network\Protocol\WebSocket
{
    /**
     * 下线时,通知所有人
     */
    function onClose($serv, $client_id, $from_id)
    {
        //将下线消息发送给所有人
        //$this->log("onOffline: " . $client_id);
        //$this->broadcast($client_id, "onOffline: " . $client_id);
        parent::onClose($serv, $client_id, $from_id);
    }

    /**
     * 接收到消息时
     * @see WSProtocol::onMessage()
     */
    function onMessage($client_id, $ws)
    {
        $this->log("onMessage: ".$client_id.' = '.$ws['message']);
        $this->send($client_id, "Server: ".$ws['message']);
  //$this->broadcast($client_id, $ws['message']);
    }

    function broadcast($client_id, $msg)
    {
        foreach ($this->connections as $clid => $info)
        {
            if ($client_id != $clid)
            {
                $this->send($clid, $msg);
            }
        }
    }
}


$AppSvr = new WebSocket();
$AppSvr->loadSetting(__DIR__."/swoole.ini"); //加载配置文件
$AppSvr->setLogger(new \Swoole\Log\EchoLog(true)); //Logger

$server = new \Swoole\Network\Server('0.0.0.0', 9503);
$server->setProtocol($AppSvr);
//$server->daemonize(); //作为守护进程
$server->run(array('worker_num' =>4));

 
标签: swoole php websocket
反对 0举报 0 评论 0
 

免责声明:本文仅代表作者个人观点,与乐学笔记(本网)无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
    本网站有部分内容均转载自其它媒体,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责,若因作品内容、知识产权、版权和其他问题,请及时提供相关证明等材料并与我们留言联系,本网站将在规定时间内给予删除等相关处理.

  • PHP 使用 Swoole - TaskWorker 实现异步操作 Mysql
    PHP 使用 Swoole - TaskWorker 实现异步操作 My
    在一般的 Server 程序中都会有一些耗时的任务,比如:发送邮件、聊天服务器发送广播等。如果我们采用同步阻塞的防水去执行这些任务,那么这肯定会非常的慢。Swoole 的 TaskWorker 进程池可以用来执行一些异步的任务,而且不会影响接下来的任务,很适合处理以
    02-09
  • swoole如何使php永久运行 php的swoole扩展
    swoole如何使php永久运行 php的swoole扩展
    有需要学习交流的友人请加入交流群的咱们一起,有问题一起交流,一起进步!前提是你是学技术的。感谢阅读!​jq.qq.com soole可以通过开启守护进程使PHP永久运行。守护进程化。设置daemonize = 1时,程序将转入后台作为守护进程运行。长时间运行的服务器端程
    02-09
  • 通过 PECL 安装 PHP 扩展(以 CentOS7 中安装 s
    PECL 和 phpize官网文档PHP 有大量的扩展可以使用,比如用于连接数据库的扩展 mysqli,图形库 gd2 等。扩展有两种安装方法:通过 pear install xxx 安装,需要提前在机器上安装 pear,CentOS 下可以通过 yum install php72w-pear 可以安装 PHP7.2 对应的版本
    02-09
  • ysapi:由 Swoole + yaf 实现 socket 服务基础框架
    ysapi:由 Swoole + yaf 实现 socket 服务基础
    ysapi简介 ysapi是一个由 swoole + yaf 实现socket服务基础框架. 由swoole实现socket服务,对外提供API接口, yaf负责api对应的业务逻辑.功能介绍 基于socket提供更快的数据返回 基于swoole多进程task模型,实现多任务并行处理 客户端单次调用,服务端自动拆分任
    02-05 YafSwoole
  • Swoole 2.0 正式版发布,协程特性支持 PHP 7
    Swoole 2.0正式版发布了。2.0版本最大的更新是增加了对协程(Coroutine)的支持。正式版已同时支持PHP5和PHP7。基于Swoole2.0协程PHP开发者可以已同步的方式编写代码,底层自动进行协程调度,转变为异步IO。解决了传统异步编程嵌套回调的问题。与Node.js(ES6
    01-06 Swoole
  • Swoole 2.0 协程的实现原理
    实现原理Swoole2.0基于setjmp、longjmp实现,在进行协程切换时会自动保存Zend VM的内存状态(主要是EG全局内存和vm stack)。示例代码$server = new Swoole\Http\Server('127.0.0.1', 9501, SWOOLE_BASE);#1$server-on('Request', function($request, $respon
    12-23 Swoole
  • 在Server中使用swoole_table
    背景:对于swoole这样的Server想灵活的实现不同端口间(tcp/websocket/httpd) 的通讯,用swoole自己的table可能更能灵活处理一些逻辑fd的发送,这块简单,不支持搜索,能基本上满足简单业务需求,当然更复杂可以用Redis/Mysql,显然这个是针对物联网的,因为
    12-23 Swoole
  • Swoole 1.9.1 发布,Bug 修复版本
    PHP的异步、并行、高性能网络通信引擎Swoole 已发布 1.9.1 版本。此版本是一个BUG修复版本,建议用户升级至此版本。主要更新:修复使用addProcess添加用户进程后无法正常shutdown的问题异步读写文件函数Async::writeFile增加FILE_APPEND选项支持异步读写文件
    12-23 Swoole
  • swoole-vue-webim:基于 Vue 和 Swoole 构建的 Web 聊天应用
    swoole-vue-webim:基于 Vue 和 Swoole 构建的
    swoole-vue-webim 这是一个 Web 版的聊天应用,前端基于 Vue 来构建,用 Vuex 来进行状态管理, webpack 构建;服务端通过 Swoole 来实现。基本功能有单聊、群聊、用户状态、消息状态以及通知信息。 如何部署?1.前期准备 需要安装 npm 和 Swoole ,其中还要
    12-01 SwooleVue.js
  • syar:Swoole 实现的 Yar 服务
    为何用swoole来实现 Yar server历史代码使用了yar, 不想过多修改客户端代码提升Yar服务端执行效率学习swoole, yar(在此感谢laruence,rango及swoole开发团队)Requirephp5.4+ext-swoole 1.8.8+ext-msgpack 如果yar使用msgpack编码方式Installcomposer require '
    12-01 Swoole
点击排行