55
66use swoole_websocket_and_tcp_and_udp \common \Logger ;
77use swoole_websocket_and_tcp_and_udp \common \ProcessTrait ;
8+ use swoole_websocket_and_tcp_and_udp \handler \HttpHandler ;
9+ use swoole_websocket_and_tcp_and_udp \handler \WebsocketHandler ;
810
911class Server
1012{
@@ -23,6 +25,8 @@ class Server
2325
2426 protected $ enableWebsocket = false ;
2527
28+ protected $ enableTask = false ;
29+
2630 public function __construct ($ config )
2731 {
2832 $ this ->config = $ config ;
@@ -44,15 +48,19 @@ public function __construct($config)
4448 $ type = $ this ->primaryConfig ['type ' ];
4549 $ setting = $ this ->primaryConfig ['setting ' ];
4650
51+ if (isset ($ setting ['task_worker_num ' ])) {
52+ $ this ->enableTask = true ;
53+ }
54+
4755 Logger::info ("开始监听端口 {$ host }: {$ port }" );
4856 $ this ->server = new $ serverClass ($ host , $ port , SWOOLE_PROCESS , $ type );
4957 $ this ->server ->set ($ setting );
5058
5159
5260 $ this ->bindBaseEvent ();
53- $ this ->bindHttpEvent ();
5461 $ this ->bindTaskEvent ();
55- $ this ->bindWebsocketEvent ();
62+ $ this ->bindMasterEvent ();
63+ $ this ->bindOtherEvent ();
5664 }
5765
5866 /**
@@ -72,34 +80,19 @@ protected function bindBaseEvent()
7280 $ this ->server ->on ('PipeMessage ' , [$ this , 'PipeMessage ' ]);
7381 }
7482
75- protected function bindHttpEvent ()
76- {
77- $ this ->server ->on ('Request ' , [$ this , 'request ' ]);
78- }
79-
8083 protected function bindTaskEvent ()
8184 {
8285 $ this ->server ->on ('Task ' , [$ this , 'task ' ]);
8386 $ this ->server ->on ('Finish ' , [$ this , 'finish ' ]);
8487 }
8588
86- protected function bindWebsocketEvent ()
89+ protected function bindMasterEvent ()
8790 {
88- if ($ this ->enableWebsocket ) {
89- $ handlerClass = $ this ->primaryConfig ['handler ' ];
90- $ handler = new $ handlerClass ();
91- if (!($ handler instanceof protocol \WebsocketEvent)) {
92- throw new \Exception (sprintf ('%s 当前类不属于 %s ' ,
93- $ handlerClass , protocol \WebsocketEvent::class));
94- }
91+ $ handlerClass = $ this ->primaryConfig ['handler ' ];
9592
96- $ eventHandler = function ($ method , array $ params ) use ($ handler ) {
97- try {
98- call_user_func_array ([$ handler , $ method ], $ params );
99- } catch (\Exception $ e ) {
100- exit ($ e );
101- }
102- };
93+ if ($ this ->enableWebsocket ) {
94+ $ websocketHandler = new WebsocketHandler ($ handlerClass );
95+ $ eventHandler = $ websocketHandler ->make ();
10396
10497 $ this ->server ->on ('Open ' , function () use ($ eventHandler ) {
10598 $ eventHandler ('open ' , func_get_args ());
@@ -112,9 +105,21 @@ protected function bindWebsocketEvent()
112105 $ this ->server ->on ('Close ' , function () use ($ eventHandler ) {
113106 $ eventHandler ('close ' , func_get_args ());
114107 });
108+ } else {
109+ $ httpHandler = new HttpHandler ($ handlerClass );
110+ $ eventHandler = $ httpHandler ->make ();
111+
112+ $ this ->server ->on ('request ' , function () use ($ eventHandler ) {
113+ $ eventHandler ('request ' , func_get_args ());
114+ });
115115 }
116116 }
117117
118+ protected function bindOtherEvent ()
119+ {
120+
121+ }
122+
118123 public function start (\swoole_http_server $ server )
119124 {
120125 foreach (spl_autoload_functions () as $ function ) {
@@ -154,8 +159,10 @@ public function WorkerStart(\swoole_http_server $server, $worker_id)
154159 $ this ->setProcessName (sprintf ('%s process %d ' , $ process ,
155160 $ worker_id ));
156161
157- if (!$ server ->taskworker ) {
158- $ server ->task (1 );
162+ if ($ this ->enableTask ) {
163+ if (!$ server ->taskworker ) {
164+ $ server ->task (1 );
165+ }
159166 }
160167 }
161168
@@ -208,13 +215,6 @@ public function finish(\swoole_http_server $server, $task_id, $data)
208215
209216 }
210217
211- public function request (
212- \swoole_http_request $ request ,
213- \swoole_http_response $ response
214- ) {
215-
216- }
217-
218218 public function run ()
219219 {
220220 Logger::info ('运行服务... ' );
0 commit comments