67 lines
1.3 KiB
PHP
67 lines
1.3 KiB
PHP
<?php
|
|
|
|
namespace think\worker\response;
|
|
|
|
use think\Event;
|
|
use think\Response;
|
|
|
|
class Websocket extends Response
|
|
{
|
|
protected $listeners = [];
|
|
|
|
public function onOpen($listener)
|
|
{
|
|
$this->listeners['Open'] = $listener;
|
|
return $this;
|
|
}
|
|
|
|
public function onMessage($listener)
|
|
{
|
|
$this->listeners['Message'] = $listener;
|
|
return $this;
|
|
}
|
|
|
|
public function onEvent($listener)
|
|
{
|
|
$this->listeners['Event'] = $listener;
|
|
return $this;
|
|
}
|
|
|
|
public function onClose($listener)
|
|
{
|
|
$this->listeners['Close'] = $listener;
|
|
return $this;
|
|
}
|
|
|
|
public function onConnect($listener)
|
|
{
|
|
$this->listeners['Connect'] = $listener;
|
|
return $this;
|
|
}
|
|
|
|
public function onDisconnect($listener)
|
|
{
|
|
$this->listeners['Disconnect'] = $listener;
|
|
return $this;
|
|
}
|
|
|
|
public function onPing($listener)
|
|
{
|
|
$this->listeners['Ping'] = $listener;
|
|
return $this;
|
|
}
|
|
|
|
public function onPong($listener)
|
|
{
|
|
$this->listeners['Pong'] = $listener;
|
|
return $this;
|
|
}
|
|
|
|
public function subscribe(Event $event)
|
|
{
|
|
foreach ($this->listeners as $eventName => $listener) {
|
|
$event->listen('worker.websocket.' . $eventName, $listener);
|
|
}
|
|
}
|
|
}
|