CyberWin.聊天室-C#、php 聊天 屏幕共享————未来之窗跨平台操作

on('open',function(swoole_websocket_server $server,$request){
    echo "server: handshake success with fd{$request->fd}\n";
     $connection_info = $server->connection_info($request->fd);
    if ($connection_info) {
        $client_ip = $connection_info['remote_ip'];
        $client_port = $connection_info['remote_port'];
      //  echo "Received message from {$client_ip}:{$client_port}, file descriptor: {$frame->fd}\n";
       $东方仙盟_服务返回['ip']=$client_ip;
        $东方仙盟_服务返回['port']=$client_port;
    }
    
     $东方仙盟_服务返回['type']="success";
     $东方仙盟_服务返回['msg']="仙盟服务器".date("Y-m-d H:i:s");
    
      $东方仙盟_服务返回json=json_encode($东方仙盟_服务返回);
            
            $server->push($request->fd, $东方仙盟_服务返回json);
            
    
});

$server->on('message',function(swoole_websocket_server $server,$frame){
   echo "receive from {$frame->fd}:{$frame->data}";
   echo "opcode:{$frame->opcode}";
   echo "fin: {$frame->finish}\n";
   
   
   
  //  $东方仙盟_服务返回['status']=9;
 //   $东方仙盟_服务返回['path']=$path;
   // $东方仙盟_服务返回['收到']=$frame->data;
    
    $path = $frame->data; 
    /*
   $东方仙盟_服务返回json=json_encode($东方仙盟_服务返回);
   // $server->push($frame->fd, $东方仙盟_服务返回json);
   // 假设消息中包含路径信息,例如:/path1, /path2
    switch ($path) {
        case '/path1':
            // 处理 /path1 的逻辑
            $server->push($frame->fd, "You are accessing path1");
            break;
        case '/path2':
            // 处理 /path2 的逻辑
            $server->push($frame->fd, "You are accessing path2");
            break;
      case '/屏幕共享':
            // 处理 /path2 的逻辑
            //$server->push($frame->fd, "You are accessing path2");
             // 将广播任务发送给 Task 进程处理
          //  $server->task($frame->data);
            return;
            break;
        default:
            // 处理其他情况
            $东方仙盟_服务返回['message']="Invalid path";
            $东方仙盟_服务返回json=json_encode($东方仙盟_服务返回);
           // $server->push($frame->fd, $东方仙盟_服务返回json);
         //  东方仙盟_屏幕共享($server,$frame,$frame->data);
           break;
    }
    */
    
      $东方仙盟_服务返回['type']="success";
     $东方仙盟_服务返回['msg']="仙盟服务器".date("Y-m-d H:i:s");
     
     $connection_info = $server->connection_info($frame->fd);
    if ($connection_info) {
        $client_ip = $connection_info['remote_ip'];
        $client_port = $connection_info['remote_port'];
      //  echo "Received message from {$client_ip}:{$client_port}, file descriptor: {$frame->fd}\n";
       $东方仙盟_服务返回['ip']=$client_ip;
        $东方仙盟_服务返回['port']=$client_port;
    }
    
     
     $解析客户端=json_decode($frame->data,true);
     if($解析客户端['type'] == "chat"){
          $东方仙盟_服务返回['type']="chat_success";
          $东方仙盟_服务返回['msg']= $东方仙盟_服务返回['ip']."口".$client_port."说:".$解析客户端['content'];
     }
     
     if($解析客户端['type'] == "create"){
          $东方仙盟_服务返回['type']="success";
          //room_name
          东方仙盟_共享交互_仙界($解析客户端['room_name'],$client_ip);
          $东方仙盟_服务返回['msg']= $东方仙盟_服务返回['ip']."口".$client_port."创建:".$解析客户端['room_name'];
     }
     
     if($解析客户端['type'] == "offer"){
          $东方仙盟_服务返回['type']="offer_success";
          //room_name
          东方仙盟_共享交互_仙界仙使者($解析客户端['room_name'],$client_ip,$解析客户端);
          $东方仙盟_服务返回['msg']= $东方仙盟_服务返回['ip']."口".$client_port."共享:".$解析客户端['room_name'];
     }
     
      if($解析客户端['type'] == "join"){
          $东方仙盟_服务返回['type']="success";
          //room_name
          
          $东方仙盟_服务返回['msg']= $东方仙盟_服务返回['ip']."口".$client_port."加入:".$解析客户端['room_name'];
     }
     
     /*
     room_name
: 
"东方少主"
type
: 
"join"
username
: 
"东方慧"
*/
     //getoffer
       if($解析客户端['type'] == "getoffer"){
           //请求房间
         // $东方仙盟_服务返回['type']="offer_success";
          //room_name
         
          $东方仙盟_服务返回['msg']= $东方仙盟_服务返回['ip']."口".$client_port."请求加入屏幕:".$解析客户端['room_name'];
               
            $服务提供者 = 东方仙盟_共享交互_仙界仙获取房间信息($解析客户端['room_name'],$client_ip,$解析客户端);
           $东方仙盟_服务返回['type']="getoffer_success";
            $东方仙盟_服务返回['offer']=$服务提供者;
            if($服务提供者=="cybererror" || $服务提供者=="" ){
                 $东方仙盟_服务返回['msg']= $东方仙盟_服务返回['ip']."口".$client_port."找不到供应商:".$解析客户端['room_name'];
                 $东方仙盟_服务返回['type']="error";
            }
         
     }
     
     //2025-01-24 2154
     
       if($解析客户端['type'] == "answer"){
                               
               
                // 消息.is_sender = true;
               $东方仙盟_服务返回['type']="answer_success";
               $东方仙盟_服务返回['answer']=$解析客户端['answer'];
   
       }
       /*
        if (解码.type.Equals("ice") == true)
            {
                消息.msg ="ice信息收到,开始发送屏幕";//
              //  消息.type = "success";//创建成功                           
                消息.room_name = 解码.room_name;
              
                // 消息.is_sender = true;
                if (解码.ice == null)
                {
                  //  消息.ice = CyberWin_Public_var.屏幕提供anser;
                }

                if (解码.is_sender == true)
                {
                   // 消息.ice = 解码.ice;
                    消息.msg = "ice信息收到,提供服务";//
                    消息.type = "ice_success";//创建成功
                                            // 消息.msg = "";// 解码.ice;// "ice信息收到,开始发送屏幕";//

                    WriteLog("ice", 消息.ice.ToString(), clientIP);

                    消息json = JsonConvert.SerializeObject(消息);

                    // 消息.type = "ice_success";//创建成功
                    //   _room_name
                    Sessions.Broadcast(消息json);
                    return;
                }
                if (解码.is_receiver == true)
                {
                    消息.ice = 解码.ice;
                    消息.type = "ice_success";//创建成功
                                            // 消息.msg = "";// 解码.ice;// "ice信息收到,开始发送屏幕";//

                    WriteLog("ice", 消息.ice.ToString(), clientIP);

                    消息json = JsonConvert.SerializeObject(消息);

                    // 消息.type = "ice_success";//创建成功
                    //   _room_name
                    Sessions.Broadcast(消息json);
                    return;
                }
                消息.ice = 解码.ice;

                消息.type = "ice_success";//创建成功
               // 消息.msg = "";// 解码.ice;// "ice信息收到,开始发送屏幕";//

                WriteLog("ice", 消息.ice.ToString(), clientIP);

                消息json = JsonConvert.SerializeObject(消息);

                // 消息.type = "ice_success";//创建成功
                //   _room_name
                Sessions.Broadcast(消息json);
                return;
            }
       */
       if($解析客户端['type'] == "answer"){
           if ($解析客户端['is_sender']== true)
            {
               // 消息.msg = "ice信息收到,提供服务";//
                //   消息.type = "ice_success";//创建成功
                $东方仙盟_服务返回['type']="ice_success";
             
                $东方仙盟_服务返回['msg']= $东方仙盟_服务返回['ip']."口".$client_port."ice信息收到:".$解析客户端['room_name'];
            }
             if ($解析客户端['is_receiver']== true)
            {
                // 消息.ice = 解码.ice;
                //   消息.type = "ice_success";//创建成功
                $东方仙盟_服务返回['type']="ice_success";
                $东方仙盟_服务返回['ice']=$解析客户端['ice'];
                $东方仙盟_服务返回['msg']= $东方仙盟_服务返回['ip']."口".$client_port."ice我要你:".$解析客户端['room_name'];
            }
            
       }
     
     
     
     //
    //  $client_fds = array_keys($server->connections);
    if($解析客户端['room_name']){
        $东方仙盟_服务返回['room_name']=$解析客户端['room_name'];
    }
    if($解析客户端['username']){
        $东方仙盟_服务返回['username']=$解析客户端['username'];
    }
      //$东方仙盟_服务返回['所有链接']=$server->connections;
      $东方仙盟_服务返回['服务']=json_encode($server);
       $东方仙盟_服务返回['服务2']=json_encode($frame);
     
     $东方仙盟_服务返回['type收到']=$解析客户端['type'];
      $东方仙盟_服务返回['收到r']=$解析客户端;
      $东方仙盟_服务返回json=json_encode($东方仙盟_服务返回);
            
          //  $server->push($frame->fd, $东方仙盟_服务返回json);
        //$解析客户端['type'] == "getoffer"
        $不广播分组 = array("getoffer", "apple");
        
        // 检查值 3 是否存在于数组中
        if (in_array($解析客户端['type'], $不广播分组)) {
            $server->push($frame->fd, $东方仙盟_服务返回json);
            return;
        }
        if (in_array($解析客户端['type'], $不广播分组)==false) {
             foreach($server->connections as $fd)
            {
               // if ($server->exist($fd)) {
                     $server->push($fd, $东方仙盟_服务返回json);
               // }
            }
        }
                    /*
    
      $client_fds = array_keys($server->connections);
    // 遍历所有客户端文件描述符
    foreach ($client_fds as $fd=>$value) {
        if ($server->exist($fd)) {
            // 向客户端发送消息
            
             $东方仙盟_服务返回['message']="Invalid path";
            $东方仙盟_服务返回json=json_encode($东方仙盟_服务返回);
            
            $server->push($fd, $东方仙盟_服务返回json);
        }
    }
    */
   
    
   //$server->push($frame->fd,"this is a server");
});


$server->on('close',function($ser,$fd){
   echo "client {$fd} closed\n";
});



// The Request event closure callback is passed the context of $server
//2025-01-23
$server->on('request', function($request,  $response) 
{
    /*
     * Loop through all the WebSocket connections to
     * send back a response to all clients. Broadcast
     * a message back to every WebSocket client.
     */
     // global $server;//调用外部的server
    foreach($server->connections as $fd)
    {
        // Validate a correct WebSocket connection otherwise a push may fail
        if($server->isEstablished($fd))
        {
            //$server->push($fd, $request->get['message']);
              $东方仙盟_服务返回['type']="success";
              $东方仙盟_服务返回['msg']="仙盟服务器".date("Y-m-d H:i:s");
     
           $connection_info = $server->connection_info($fd);
           if ($connection_info) {
                    $client_ip = $connection_info['remote_ip'];
                    $client_port = $connection_info['remote_port'];
                  //  echo "Received message from {$client_ip}:{$client_port}, file descriptor: {$frame->fd}\n";
                   $东方仙盟_服务返回['ip']=$client_ip;
                    $东方仙盟_服务返回['port']=$client_port;
                }
                
              $东方仙盟_服务返回['type']="chat_success";
              $东方仙盟_服务返回['msg']= ">>>>".$东方仙盟_服务返回['ip']."口".$client_port."说:".$解析客户端['content'];
    
      
     
 
      
                   $东方仙盟_服务返回['type收到']=$$解析客户端['type'];
                  $东方仙盟_服务返回['收到r']=$request->get['message'];
                   $东方仙盟_服务返回json=json_encode($东方仙盟_服务返回);
          //  $server->push($fd, $东方仙盟_服务返回json);
           
           
        }
    }
});


$server->on('workerStart', function (swoole_websocket_server $server, $workerId) {
    // 这里进行工作进程启动时的初始化操作
    if ($workerId === 0) {
        // 主进程(一般进行一些全局资源的初始化)
    } else {
        // 其他工作进程
    }
    
     $东方仙盟_服务返回['type']="success";
     $东方仙盟_服务返回['msg']="仙盟服务器".date("Y-m-d H:i:s");
    
      $东方仙盟_服务返回json=json_encode($东方仙盟_服务返回);
      foreach($server->connections as $fd)
        {
             //   $server->push($fd, $东方仙盟_服务返回json);
        }
                
});




$server->start();
?>connections);
    // 遍历所有客户端文件描述符
    foreach ($client_fds as $fd) {
        if ($仙盟服务->exist($fd)) {
            // 向客户端发送消息
            
             $东方仙盟_服务返回['message']="Invalid path";
            $东方仙盟_服务返回json=json_encode($东方仙盟_服务返回);
            
            $仙盟服务->push($fd, $东方仙盟_服务返回json);
        }
    }
    // 任务完成
    $仙盟服务->finish($data);
    
 
 }
 
 ?>
  $v){
          $小世界=$v;
          if($小世界['room_name']==$小世界名称){
              //return true;
              东方仙盟_共享交互_addlog("仙界仙使者","找到了",$东方卷宗);
              $东方卷宗[$k]['offer']=$客户数据['offer'];
          }
      }
      
       东方仙盟_共享交互_addlog("仙界仙使者","处理后",$小世界名称);
       
       $东方卷宗存放 = json_encode($东方卷宗,JSON_UNESCAPED_UNICODE);
      file_put_contents($东方卷宗路径,$东方卷宗存放);
     
      
      
 }
 
 function 东方仙盟_共享交互_仙界( $小世界名称,$ip){
     //room_name
     $东方卷宗路径 ="/CyberWin/cyberwin_ws/东方卷宗".date("Y_m_d").".cwp";
     $jsonData = file_get_contents($东方卷宗路径);
    
    // 将 JSON 字符串转换为 PHP 数组
      $东方卷宗 = json_decode($jsonData, true);
      
      if(!$东方卷宗){
          $东方卷宗=[];
      }
    //  echo "客户端 IP 地址是:".$client_ip;
    $client_ip = $_SERVER['REMOTE_ADDR'];
     $小世界存在 = 东方仙盟_共享交互_仙界_寻找($东方卷宗,$小世界名称);
     if($小世界存在==false){
         $小世界['room_name']=$小世界名称;
         $小世界['offer']="";
         $小世界['ip']=$ip;
         $小世界['port']="";
         $小世界['username']="";
          $小世界['client_ip']=$client_ip;
         $小世界['create_time']=date("Y-m-d H:i:s");
         $东方卷宗[]=$小世界;
         
         $东方卷宗存放 = json_encode($东方卷宗,JSON_UNESCAPED_UNICODE);
           file_put_contents($东方卷宗路径,$东方卷宗存放);
     }
      
      
 }
 
 function 东方仙盟_共享交互_仙界_寻找( $东方卷宗,$小世界名称){
     
      
      foreach($东方卷宗 as $k => $v){
          $小世界=$v;
          if($小世界['room_name']==$小世界名称){
              return true;
          }
      }
      
      return false;
      
      
     
 }
 
 //2025-01-24
 
  function 东方仙盟_共享交互_仙界仙获取房间信息( $小世界名称,$ip,$客户数据){
      东方仙盟_共享交互_仙界( $小世界名称,$ip);
     //room_name
     $东方卷宗路径 ="/CyberWin/cyberwin_ws/东方卷宗".date("Y_m_d").".cwp";
     $jsonData = file_get_contents($东方卷宗路径);
    
    // 将 JSON 字符串转换为 PHP 数组
      $东方卷宗 = json_decode($jsonData, true);
      
      if(!$东方卷宗){
          $东方卷宗=[];
      }
    //  echo "客户端 IP 地址是:".$client_ip;
   
      foreach($东方卷宗 as $k => $v){
          $小世界=$v;
          if($小世界['room_name']==$小世界名称){
              //return true;
              //$东方卷宗[$k]['offer']=$客户数据['offer'];
              return $东方卷宗[$k]['offer'];
          }
      }
      
      return "cybererror";
     //  $东方卷宗存放 = json_encode($东方卷宗,JSON_UNESCAPED_UNICODE);
     // file_put_contents($东方卷宗路径,$东方卷宗存放);
     
      
      
 }
 
 
  ?>

你可能感兴趣的:(数据库)