Skip to content
This repository was archived by the owner on Mar 24, 2025. It is now read-only.

Commit 0351741

Browse files
committed
fixes for working with websocket in jobs
1 parent d529bb3 commit 0351741

File tree

2 files changed

+33
-14
lines changed

2 files changed

+33
-14
lines changed

src/Server/Manager.php

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -122,13 +122,18 @@ protected function initialize()
122122
*/
123123
protected function setSwooleServerListeners()
124124
{
125+
$server = $this->container->make(Server::class);
126+
if ($server->taskworker){
127+
return;
128+
}
129+
125130
foreach ($this->events as $event) {
126131
$listener = Str::camel("on_$event");
127132
$callback = method_exists($this, $listener) ? [$this, $listener] : function () use ($event) {
128133
$this->container->make('events')->dispatch("swoole.$event", func_get_args());
129134
};
130135

131-
$this->container->make(Server::class)->on($event, $callback);
136+
$server->on($event, $callback);
132137
}
133138
}
134139

@@ -170,11 +175,8 @@ public function onWorkerStart($server)
170175

171176
$this->container->make('events')->dispatch('swoole.workerStart', func_get_args());
172177

173-
// don't init laravel app in task workers
174178
if ($server->taskworker) {
175179
$this->setProcessName('task process');
176-
177-
return;
178180
}
179181
$this->setProcessName('worker process');
180182

src/Websocket/Websocket.php

Lines changed: 27 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
use Illuminate\Support\Facades\Config;
99
use InvalidArgumentException;
1010
use SwooleTW\Http\Server\Facades\Server;
11+
use SwooleTW\Http\Server\Manager;
1112
use SwooleTW\Http\Websocket\Rooms\RoomContract;
1213

1314
/**
@@ -172,17 +173,33 @@ public function emit(string $event, $data): bool
172173
return false;
173174
}
174175

175-
$result = App::make(Server::class)->task([
176-
'action' => static::PUSH_ACTION,
177-
'data' => [
178-
'sender' => $this->sender,
179-
'fds' => $fds,
176+
/** @var Server $server */
177+
$server = App::make(Server::class);
178+
179+
if ($server->taskworker) {
180+
/** @var Manager $manager */
181+
$manager = App::make(Manager::class);
182+
$result = $manager->pushMessage($server, [
183+
'sender' => $this->sender,
184+
'fds' => $fds,
180185
'broadcast' => $this->isBroadcast,
181-
'assigned' => $assigned,
182-
'event' => $event,
183-
'message' => $data,
184-
],
185-
]);
186+
'assigned' => $assigned,
187+
'event' => $event,
188+
'message' => $data,
189+
]);
190+
} else {
191+
$result = $server->task([
192+
'action' => static::PUSH_ACTION,
193+
'data' => [
194+
'sender' => $this->sender,
195+
'fds' => $fds,
196+
'broadcast' => $this->isBroadcast,
197+
'assigned' => $assigned,
198+
'event' => $event,
199+
'message' => $data,
200+
],
201+
]);
202+
}
186203

187204
$this->reset();
188205

0 commit comments

Comments
 (0)