alexboo / websocket-handler
WebSocket 处理器
dev-master
2018-01-26 04:00 UTC
Requires
- php: >=5.4.0
- cboden/ratchet: dev-master
This package is not auto-updated.
Last update: 2024-09-14 18:28:01 UTC
README
一个用于定义WebSocket命令处理器的小型库
安装
您可以使用composer安装此库
composer require alexboo/websocket-handler
使用方法
您需要创建一个处理器工厂以创建处理每个命令的处理器。它必须实现HandlerFactoryInterface接口。在处理器工厂中,您可以在创建处理器之前添加ACL。
示例处理器工厂
class HandlerFactory implements HandlerFactoryInterface
{
/**
* Get handler for command
* @param Client $client
* @param $command
* @return Handler
*/
public function getHandler(Client $client, $command)
{
$handler = new Handler();
switch ($command) {
case "auth":
$handler->setObject(new AuthService(), "auth");
break;
case "message":
$handler->setClosure(function(){
// do something
});
break;
}
return $handler;
}
/**
* Client open connection
* @param Client $client
* @return mixed
*/
public function open(Client $client){
}
/**
* Client close connection
* @param Client $client
* @return mixed
*/
public function close(Client $client)
{
}
}
然后您可以启动WebSocket服务器
$wsHandler = WebSocketHandler::getInstance(new HandlerFactory());
$ioServer = IoServer::factory(
new HttpServer(new \Ratchet\WebSocket\WsServer($wsHandler)),
8001
);
$ioServer->run();
必须传递给基于ReflectionApi定义的处理器的参数。您可以通过指定"Client"类的参数或对象实现的Alexboo\WebSocketHandler\Interfaces\RequestInterface中的查询参数来请求有关客户端的信息。
示例
class AuthRequest implements RequestInterface {
public function setData($data){
}
}
class AuthService {
public function auth(Client $client, AuthRequest $request)
{
}
}