server.php 3.5 KB
<?php
require_once __DIR__ . '/simplewind/vendor/autoload.php';
require_once __DIR__ . '/simplewind/vendor/workerman/workerman/Autoloader.php';

use Workerman\Worker;
use think\Db;
use Workerman\Lib\Timer;
use Workerman\Connection\AsyncTcpConnection;


//创建一个监听端口
$worker = new Worker("websocket://114.215.223.17:5001");
//设置当前Worker实例的名称
$worker->name='panhaowen';
// 启动1个进程对外提供服务
$worker->count = 1;


//tcpdump -Ans 4096 -iany port



//// 进程启动时设置一个定时器,定时向所有客户端连接发送数据
//$worker->onWorkerStart = function($worker)
//{
//    // 定时,每10秒一次
//    Timer::add(10, function()use($worker)
//    {
//        // 遍历当前进程所有的客户端连接,发送当前服务器的时间
//        foreach($worker->connections as $connection)
//        {
//            $connection->send(time());
//        }
//    });
//};





//$worker->onConnect = function($connection)
//{
//    echo "new connection from ip " . $connection->getRemoteIp() . "\n";
//};
//
//$worker->onClose = function($connection)
//{
//    echo $connection->id. "is exit" . "\n";
//};





//$worker->onWorkerStart = function($worker)
//{
//    // 将db实例存储在全局变量中(也可以存储在某类的静态成员中)
//    global $db;
//    $db = new \Workerman\MySQL\Connection('rm-m5eblhc9o3515i25neo.mysql.rds.aliyuncs.com', '3306', 'db136s1ehvo1yn73', 'cxz307311SJK', 'fupai');
//};




// 当客户端发来数据时
$worker->onMessage = function($connection, $data) {
//    global $db;
//    $data=$db->select('create_time')->from('fp_user')->where("id=1")->query();
    echo $data;
    $connection->send('I am panhaowen');
};






//$global_uid = 0;
//
//// 当客户端连上来时分配uid,并保存连接,并通知所有客户端
//$worker->onConnect=function ($connection)
//{
//    global $global_uid;
//    // 为这个连接分配一个uid
//    $connection->uid = ++$global_uid;
//};
//
//// 当客户端发送消息过来时,转发给所有人
//$worker->onMessage =function ($connection, $data)
//{
//    global $worker;
//    foreach($worker->connections as $conn)
//    {
//        $conn->send("user[{$connection->uid}] said: $data");
//    }
//};
//
//// 当客户端断开时,广播给所有客户端
//$worker->onClose =function ($connection)
//{
//    global $worker;
//    foreach($worker->connections as $conn)
//    {
//        $conn->send("user[{$connection->uid}] logout");
//    }
//};





//$task = new Worker();
//// 进程启动时异步建立一个到www.baidu.com连接对象,并发送数据获取数据
//$task->onWorkerStart = function($task)
//{
//    // 不支持直接指定http,但是可以用tcp模拟http协议发送数据
//    $connection_to_baidu = new AsyncTcpConnection('tcp://www.baidu.com:80');
//    // 当连接建立成功时,发送http请求数据
//    $connection_to_baidu->onConnect = function($connection_to_baidu)
//    {
//        echo "connect success\n";
//        $connection_to_baidu->send("GET / HTTP/1.1\r\nHost: www.baidu.com\r\nConnection: keep-alive\r\n\r\n");
//    };
//    $connection_to_baidu->onMessage = function($connection_to_baidu, $http_buffer)
//    {
//        echo $http_buffer;
//    };
//    $connection_to_baidu->onClose = function($connection_to_baidu)
//    {
//        echo "connection closed\n";
//    };
//    $connection_to_baidu->onError = function($connection_to_baidu, $code, $msg)
//    {
//        echo "Error code:$code msg:$msg\n";
//    };
//    $connection_to_baidu->connect();
//};





Worker::runAll();