魔法のハコ計画の全体像は以下です。

で、最初は一番きになるところの、以下を考察します。

もちろん最終的には違う方法(libwebsocket)を使うつもりですが、
とりあえず、テストも含めてサーバはPHPで、クライアントはブラウザ上のjavascriptでテストしてみますね。
一応、こんな感じで。

で、最初の登録部分ですが、これは、サーバが発行する一意なIDです。
一意なのは瞬間的なもので、魔法のハコを識別するものでは無いです。
よって最初は、
登録がきたら、登録。
削除がきたら、削除。
サーバ側としては、onOpneとonCloseに対応させることになります。
もちろん、知らないうちに切れてたとか、バイタルのチェックとか、
そういうのは後回しですよ。
で、SRCコードは、、。
上の図で言うと、WebSocketConnect→登録 までにあたります。
つづく。。

で、最初は一番きになるところの、以下を考察します。

もちろん最終的には違う方法(libwebsocket)を使うつもりですが、
とりあえず、テストも含めてサーバはPHPで、クライアントはブラウザ上のjavascriptでテストしてみますね。
一応、こんな感じで。

で、最初の登録部分ですが、これは、サーバが発行する一意なIDです。
一意なのは瞬間的なもので、魔法のハコを識別するものでは無いです。
よって最初は、
{
"witchlist":{
"3":{
あれこれ
}
"6":{
あれこれ
}
}
}
みたいな感じにしときましょう。テストだし。登録がきたら、登録。
削除がきたら、削除。
サーバ側としては、onOpneとonCloseに対応させることになります。
もちろん、知らないうちに切れてたとか、バイタルのチェックとか、
そういうのは後回しですよ。
で、SRCコードは、、。
namespace MyApp;
use Ratchet\MessageComponentInterface;
use Ratchet\ConnectionInterface;
function DBG($v){
file_put_contents("/etc/log/debug01.jsn",$v);
}
class Finred implements MessageComponentInterface {
protected $clients;
protected $finredAR;
//-------------------------------------
public function __construct() {
// $this->clients = new \SplObjectStorage;
$this->clients = array();
$this->finredAR = array();
}
//-------------------------------------
public function onOpen(ConnectionInterface $conn) {
// Store the new connection to send messages to later
// $this->clients->attach($conn);
$this->clients[$conn->resourceId] = $conn;
echo "New connection! ({$conn->resourceId})\n";
$this->finredAR["{$conn->resourceId}"] = array("memo" => "new connect");
DBG(json_encode($this->finredAR));
}
//-------------------------------------
public function onClose(ConnectionInterface $conn) {
// The connection is closed, remove it, as we can no longer send it messages
// $this->clients->detach($conn);
unset($this->clients[$conn->resourceId]);
unset($this->finredAR["{$conn->resourceId}"]);
echo "Connection {$conn->resourceId} has disconnected\n";
DBG(json_encode($this->finredAR));
}
//-------------------------------------
です。
で、TABを3つ開いて接続して時のデバッグ用ファイルは、
{
"46":{
"memo":"new connect"
}
,"86":{
"memo":"new connect"
}
,"91":{
"memo":"new connect"
}
}
でした。
1つTABを閉じると、、
{
"46":{
"memo":"new connect"
}
,"91":{
"memo":"new connect"
}
}
となりました。
まぁ予想通りですね。
上の図で言うと、WebSocketConnect→登録 までにあたります。
つづく。。
コメント
コメントを投稿