当前位置: 首页 > 工具软件 > Ratchet > 使用案例 >

ratchet php,一个好用的 php websocket 类库 ratchet

杭曦
2023-12-01

安装

//安装

composer require cboden/ratchet

创建自己的websocket类库

namespace MyApp;

use Ratchet\MessageComponentInterface;

use Ratchet\ConnectionInterface;

class Chat implements MessageComponentInterface {

protected $clients;

public function __construct() {

$this->clients = new \SplObjectStorage;

}

public function onOpen(ConnectionInterface $conn) {

// Store the new connection to send messages to later

$this->clients->attach($conn);

echo "New connection! ({$conn->resourceId})\n";

}

public function onMessage(ConnectionInterface $from, $msg) {

$numRecv = count($this->clients) - 1;

echo sprintf('Connection %d sending message "%s" to %d other connection%s' . "\n"

, $from->resourceId, $msg, $numRecv, $numRecv == 1 ? '' : 's');

foreach ($this->clients as $client) {

if ($from !== $client) {

// The sender is not the receiver, send to each client connected

$client->send($msg);

}

}

}

public function onClose(ConnectionInterface $conn) {

// The connection is closed, remove it, as we can no longer send it messages

$this->clients->detach($conn);

echo "Connection {$conn->resourceId} has disconnected\n";

}

public function onError(ConnectionInterface $conn, \Exception $e) {

echo "An error has occurred: {$e->getMessage()}\n";

$conn->close();

}

}

创建运行脚本

use Ratchet\Server\IoServer;

use Ratchet\Http\HttpServer;

use Ratchet\WebSocket\WsServer;

use MyApp\Chat;

require dirname(__DIR__) . '/vendor/autoload.php';

$server = IoServer::factory(

new HttpServer(

new WsServer(

new Chat()

)

),

8080

);

$server->run();

 类似资料: