美文网首页
Workerman和ThinkPHP5的结合使用

Workerman和ThinkPHP5的结合使用

作者: boystark | 来源:发表于2017-09-23 03:55 被阅读1127次

    最近学习使用Workerman,框架使用ThinkPHP5.参考官网ThinkPHP5.0完全开发手册完全不知所云!幸好自己摸索得出经验,一下为参考方法。

    • 首先通过 composer 安装

    composer require topthink/think-worker
    composer require workerman/workerman-for-win

    (注意环境为linux,所以如果你时windows,请composer require workerman/workerman-for-win)

    • 新增启动服务文件server.php,在项目根目录(yourproj/public)
    <?php
    define('APP_PATH', __DIR__ . '/application/');
    
    //其实和index.php文件内容一样,不过多绑定了一个模块用于server启动
    define('BIND_MODULE','server/index/index');
    
    require __DIR__ . '/thinkphp/start.php';
    
    • 新增服务处理模块server,监听2346端口
    <?php
    
    namespace app\sever\controller;
    
    use Workerman\Worker;
    
    class Index
    {
        // 创建一个Worker监听2346端口,使用websocket协议通讯
        $ws_worker = new Worker("websocket://0.0.0.0:2346");
        public function index()
        {
    
            // 创建一个Worker监听2346端口,使用websocket协议通讯
            $ws_worker = new Worker("websocket://0.0.0.0:2346");
    
            // 启动4个进程对外提供服务
            $ws_worker->count = 4;
    
            // 当收到客户端发来的数据后返回hello $data给客户端
            $ws_worker->onMessage = function($connection, $data)
            {
                // 向客户端发送hello $data
                $connection->send('Hello: ' . $data);
            };
    
            // 运行worker
            Worker::runAll();
        }
      
    
    • 进入public文件夹,在命令行下运行,启动监听服务

    php server.php start

    • 打开chrome浏览器,先打开push.app域名下的网页(js跨域不能通讯),按F12打开调试控制台,在Console一栏输入(或者把下面代码放入到html页面用js运行)
    ws = new WebSocket("ws://push.app:2346");
    ws.onopen = function() {
        alert("连接成功");
        ws.send('tom');
        alert("给服务端发送一个字符串:tom");
    };
    ws.onmessage = function(e) {
        alert("收到服务端的消息:" + e.data);
    };
    
    • 继续测试
    ws.send('保持连接,发第二次信息,查看服务器回应');
    

    相关文章

      网友评论

          本文标题:Workerman和ThinkPHP5的结合使用

          本文链接:https://www.haomeiwen.com/subject/izbqextx.html