no account real time chat working
This commit is contained in:
+20
-3
@@ -10,27 +10,44 @@ use Ratchet\WebSocket\WsServer;
|
|||||||
|
|
||||||
class TestServer implements MessageComponentInterface
|
class TestServer implements MessageComponentInterface
|
||||||
{
|
{
|
||||||
|
private array $connectedUsers = [];
|
||||||
|
|
||||||
|
private function deleteGivenId(int $id): void
|
||||||
|
{
|
||||||
|
foreach ($this->connectedUsers as $key => $conn) {
|
||||||
|
if ($conn->resourceId === $id) {
|
||||||
|
unset($this->connectedUsers[$key]);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
public function onOpen(ConnectionInterface $conn): void
|
public function onOpen(ConnectionInterface $conn): void
|
||||||
{
|
{
|
||||||
$conn->send('Hello World!');
|
$this->connectedUsers[] = $conn;
|
||||||
|
$conn->send("Connected users: " . count($this->connectedUsers));
|
||||||
echo "New connection: {$conn->resourceId}\n";
|
echo "New connection: {$conn->resourceId}\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
public function onMessage(ConnectionInterface $from, $msg): void
|
public function onMessage(ConnectionInterface $from, $msg): void
|
||||||
{
|
{
|
||||||
$from->send("You said: $msg");
|
$from->send("Resending: $msg");
|
||||||
|
foreach ($this->connectedUsers as $conn) {
|
||||||
|
if ($from->resourceId !== $conn->resourceId) {
|
||||||
|
$conn->send("From user " . $from->resourceId . ": " . $msg);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public function onClose(ConnectionInterface $conn): void
|
public function onClose(ConnectionInterface $conn): void
|
||||||
{
|
{
|
||||||
|
$this->deleteGivenId($conn->resourceId);
|
||||||
echo "Connection {$conn->resourceId} closed\n";
|
echo "Connection {$conn->resourceId} closed\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
public function onError(ConnectionInterface $conn, \Exception $e): void
|
public function onError(ConnectionInterface $conn, \Exception $e): void
|
||||||
{
|
{
|
||||||
echo "Error: {$e->getMessage()}\n";
|
echo "Error: {$e->getMessage()}\n";
|
||||||
$conn->close();
|
$this->onClose($conn);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user