可以将Ratchet用于多个连接吗?

时间:2015-02-12 08:54:48

标签: php chat ratchet

我想为我的网站开发一个聊天应用程序,所以在学习时我发现websocket是实时通信的最佳解决方案,因此我决定使用Ratchet

我可以设置它并创建一个基本的聊天应用程序。这是Chat类。

class Chat implements MessageComponentInterface
{
    protected $clients;    

    public function __construct() 
    {    
        $this->clients = new \SplObjectStorage;
    }

    public function onOpen(ConnectionInterface $conn) 
    {
        $this->clients->attach($conn);
    }

    public function onMessage(ConnectionInterface $from, $msg) 
    {            
        foreach ($this->clients as $client) {
            if($client !== $from)
                $client->send($msg);
        }
    }
    public function onClose(ConnectionInterface $conn)
    {
        $this->clients->detach($conn);
    } 
    public function onError(ConnectionInterface $conn, \Exception $e)
    {
        echo "The following error occured :".$e->getMessage();
        $conn->close();
    }
}

但在我继续(或可以继续)之前,我有以下问题:

  1. 我可以使用Ratchet在两个用户之间进行私密通信吗?
  2. 棘轮如何缩放?我的意思是,如果我有一个拥有100万用户的网站,我允许任何人与任何人聊天,这是可能的吗?或者我被限制创建有限的公共聊天室(如SO),任何人都可以 加入?

0 个答案:

没有答案