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的交互的主要内容,如果未能解决你的问题,请参考以下文章