swoole websocket和TCPsocket的交互

Posted 逆流的致爷

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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();

以上是关于swoole websocket和TCPsocket的交互的主要内容,如果未能解决你的问题,请参考以下文章

用swoole和websocket开发简单聊天室

swoole 安装 搭建tcp服务器和websocket

swoole websocket和TCPsocket的交互

压测 swoole_websocket_server 性能

Swoole+Redis+webSocket实现点对点即时聊天

Swoole+Redis+webSocket实现点对点即时聊天