swoole websocket和TCPsocket的交互

<?php
  /**
  * Created by PhpStorm.
  * User: lancelot
  * Date: 16-7-30
  * Time: 下午8:13
  */
  class Server
  {
  private $serv;
   
  /**
  * @var PDO
  */
  private $pdo;
   
  public function __construct()
  {
  $this->serv = new swoole_websocket_server("0.0.0.0", 9501);
  $this->serv->set([
  'worker_num' => 1,
  'dispatch_mode' => 2,
  'daemonize' => 0,
  ]);
   
  $this->serv->on('message', array($this, 'onMessage'));
  $this->serv->on('Request', array($this, 'onRequest'));
   
  $port1 = $this->serv->listen("0.0.0.0", 9503, SWOOLE_SOCK_TCP);
  $port1->set(
  [
  'open_eof_split'=> true,//检测自动分包打开(具体干什么的 我不懂)
  'package_eof' => "\r\n"
  ]
  );
  $port1->on('Receive', array($this, 'onTcpReceive'));
   
  $this->serv->start();
  }
   //显示是哪个客户端发来的数据
  public function onMessage(swoole_websocket_server $_server, $frame)
  {
  foreach($_server->connections as $fd)
  {
  $info = $_server->connection_info($fd);
  var_dump($info);
  }
  }
   //服务端接收到不同端口的数据如何处理
  public function onRequest($request, $response)
  {
  foreach($this->serv->connections as $fd)
  {
  $info = $this->serv->connection_info($fd);
  switch($info['server_port'])
  {
  case 9501:
  {
  // websocket
  if($info['websocket_status'])
  {
   
  }
  $response->end("");
  }
   
  case 9503:
  {
  // TCP
  }
  }
   
  var_dump($info);
  }
  }
   
  public function onTcpReceive( swoole_server $serv, $fd, $from_id, $data ) {
  var_dump($data);
  $data_list = explode("\r\n", $data);
  foreach ($data_list as $msg) {
  if( !empty($msg) ) {
  echo "Get Message From Client {$fd}:{$msg}\n";
  }
   
  }
  }
   
   
  }
   
  new Server();
posted @ 2016-10-29 09:25  逆流的致爷  阅读(4685)  评论(6编辑  收藏  举报