This commit is contained in:
2021-07-22 15:57:17 +08:00
parent de937ace09
commit 7293c70dca
5 changed files with 25 additions and 5 deletions
+6 -1
View File
@@ -15,6 +15,7 @@ use Swoole\Error;
use Swoole\Http\Request; use Swoole\Http\Request;
use Swoole\Http\Response; use Swoole\Http\Response;
use Swoole\Server; use Swoole\Server;
use Swoole\Server\Port;
use Throwable; use Throwable;
@@ -25,7 +26,7 @@ use Throwable;
class HTTPServerListener extends Abstracts\Server class HTTPServerListener extends Abstracts\Server
{ {
protected static mixed $_http; protected static bool|Port $_http;
use ListenerHelper; use ListenerHelper;
@@ -63,6 +64,10 @@ class HTTPServerListener extends Abstracts\Server
/** @var static $reflect */ /** @var static $reflect */
$reflect = Snowflake::getDi()->getReflect(static::class)?->newInstance(); $reflect = Snowflake::getDi()->getReflect(static::class)?->newInstance();
static::$_http = $server->addlistener($host, $port, $mode); static::$_http = $server->addlistener($host, $port, $mode);
if (!(static::$_http instanceof Port)) {
trigger_error('Port is ' . $host . '::' . $port . ' must is tcp listener type.');
}
static::$_http->set($settings['settings'] ?? []); static::$_http->set($settings['settings'] ?? []);
static::$_http->on('request', [$reflect, 'onRequest']); static::$_http->on('request', [$reflect, 'onRequest']);
static::$_http->on('connect', [$reflect, 'onConnect']); static::$_http->on('connect', [$reflect, 'onConnect']);
+1
View File
@@ -71,6 +71,7 @@ class ServerManager extends Abstracts\Server
* @param array $settings * @param array $settings
* @throws NotFindClassException * @throws NotFindClassException
* @throws ReflectionException * @throws ReflectionException
* @throws ConfigException
*/ */
public function addListener(string $type, string $host, int $port, int $mode, array $settings = []) public function addListener(string $type, string $host, int $port, int $mode, array $settings = [])
{ {
+7 -3
View File
@@ -8,6 +8,7 @@ use Snowflake\Event;
use Snowflake\Exception\NotFindClassException; use Snowflake\Exception\NotFindClassException;
use Snowflake\Snowflake; use Snowflake\Snowflake;
use Swoole\Server; use Swoole\Server;
use Swoole\Server\Port;
/** /**
@@ -19,7 +20,7 @@ class TCPServerListener extends Abstracts\Server
use ListenerHelper; use ListenerHelper;
protected static mixed $_tcp; protected static bool|Port $_tcp;
/** /**
@@ -29,12 +30,12 @@ class TCPServerListener extends Abstracts\Server
* @param int $port * @param int $port
* @param int $mode * @param int $mode
* @param array|null $settings * @param array|null $settings
* @return Server\Port * @return Port
* @throws NotFindClassException * @throws NotFindClassException
* @throws ReflectionException * @throws ReflectionException
* @throws Exception * @throws Exception
*/ */
public static function instance(Server $server, string $host, int $port, int $mode, ?array $settings = []): Server\Port public static function instance(Server $server, string $host, int $port, int $mode, ?array $settings = []): Port
{ {
if (!in_array($mode, [SWOOLE_TCP, SWOOLE_TCP6])) { if (!in_array($mode, [SWOOLE_TCP, SWOOLE_TCP6])) {
trigger_error('Port mode ' . $host . '::' . $port . ' must is tcp listener type.'); trigger_error('Port mode ' . $host . '::' . $port . ' must is tcp listener type.');
@@ -43,6 +44,9 @@ class TCPServerListener extends Abstracts\Server
/** @var static $reflect */ /** @var static $reflect */
$reflect = Snowflake::getDi()->getReflect(static::class)?->newInstance(); $reflect = Snowflake::getDi()->getReflect(static::class)?->newInstance();
static::$_tcp = $server->addlistener($host, $port, $mode); static::$_tcp = $server->addlistener($host, $port, $mode);
if (!(static::$_tcp instanceof Port)) {
trigger_error('Port is ' . $host . '::' . $port . ' must is tcp listener type.');
}
static::$_tcp->set($settings['settings'] ?? []); static::$_tcp->set($settings['settings'] ?? []);
static::$_tcp->on('receive', [$reflect, 'onReceive']); static::$_tcp->on('receive', [$reflect, 'onReceive']);
static::$_tcp->on('connect', [$reflect, 'onConnect']); static::$_tcp->on('connect', [$reflect, 'onConnect']);
+6 -1
View File
@@ -8,6 +8,7 @@ use Snowflake\Event;
use Snowflake\Exception\NotFindClassException; use Snowflake\Exception\NotFindClassException;
use Snowflake\Snowflake; use Snowflake\Snowflake;
use Swoole\Server; use Swoole\Server;
use Swoole\Server\Port;
/** /**
@@ -17,7 +18,7 @@ use Swoole\Server;
class UDPServerListener extends Abstracts\Server class UDPServerListener extends Abstracts\Server
{ {
protected static mixed $_udp; protected static bool|Port $_udp;
use ListenerHelper; use ListenerHelper;
@@ -44,6 +45,10 @@ class UDPServerListener extends Abstracts\Server
$reflect = Snowflake::getDi()->getReflect(static::class)->newInstance(); $reflect = Snowflake::getDi()->getReflect(static::class)->newInstance();
static::$_udp = $server->addlistener($host, $port, $mode); static::$_udp = $server->addlistener($host, $port, $mode);
if (!(static::$_udp instanceof Port)) {
trigger_error('Port is ' . $host . '::' . $port . ' must is tcp listener type.');
}
static::$_udp->set($settings['settings'] ?? []); static::$_udp->set($settings['settings'] ?? []);
static::$_udp->on('packet', [$reflect, 'onPacket']); static::$_udp->on('packet', [$reflect, 'onPacket']);
+5
View File
@@ -10,6 +10,7 @@ use Snowflake\Snowflake;
use Swoole\Http\Request; use Swoole\Http\Request;
use Swoole\Http\Response; use Swoole\Http\Response;
use Swoole\Server; use Swoole\Server;
use Swoole\Server\Port;
use Swoole\WebSocket\Frame; use Swoole\WebSocket\Frame;
@@ -45,6 +46,10 @@ class WebSocketServerListener extends Abstracts\Server
$reflect = Snowflake::getDi()->getReflect(static::class)?->newInstance(); $reflect = Snowflake::getDi()->getReflect(static::class)?->newInstance();
static::$_http = $server->addlistener($host, $port, $mode); static::$_http = $server->addlistener($host, $port, $mode);
if (!(static::$_http instanceof Port)) {
trigger_error('Port is ' . $host . '::' . $port . ' must is tcp listener type.');
}
static::$_http->set($settings['settings'] ?? []); static::$_http->set($settings['settings'] ?? []);
static::$_http->on('connect', [$reflect, 'onConnect']); static::$_http->on('connect', [$reflect, 'onConnect']);
static::$_http->on('handshake', [$reflect, 'onHandshake']); static::$_http->on('handshake', [$reflect, 'onHandshake']);