3

クライアント間で情報を複数回発行するにはどうすればよいですか?
つまり、あるユーザーから別のユーザーに情報を公開すると、彼は受け取って逆戻りしますが、これは一度だけです。
あるユーザーが別のユーザーに何かを送信すると、GET が読み込まれ、受信が停止するため、クライアントが 1 回だけでなく、永久に受信できるようにするにはどうすればよいでしょうか?

4

1 に答える 1

7

pub/sub のしくみ: チャネルのように、一方から入力すると、反対側から同じ情報が得られます。

したがって、パブリッシャーのデータは、サブスクライバーが存在する場合にのみ受信されます。

pubSub コンテキストを使用し、「x」と言うチャンネルにサブスクライブし、別の側から、たとえばユーザーからデータを取得し続け、毎回 publish コマンドを使用して同じチャンネルに公開します。

加入者:

$redis = new Predis\Client(// put setting here, if req);
$pubsub = $redis->pubSub();
$pubsub->subscribe($channel1);

foreach ($pubsub as $message)
{
    switch ($message->kind) {
        case 'subscribe':
            echo "Subscribed to {$message->channel}\n";
            break;

        case 'message':
            // do something
            break;
    }
}

出版社:

while(1) // or whatever condition
{

   $redis->publish($channel2, $userdata);

}

チャット メッセージを使用して接続を切断できます。たとえば、exit を発行し、サブスクライバーで終了するかどうかを確認し、接続を閉じてから、サブスクライバーがアタッチされていない場合はパブリッシャー側で確認し、それも閉じます。

于 2012-07-31T18:56:53.117 に答える