~~NOTOC~~ ---json { "title":"from()", "description":"イベントが発生したときに応対するノード番号を返します" } --- \\ ====== from() ======
==== 説明 ==== イベントが発生したときに応対するノード番号を返します。\\ ==== 構文 ====~~DISCUSSION~~$num = from()==== 引数 ==== 必要ありません。\\ ==== 返り値 ====$num : ノード番号==== 備考 ==== 次のイベントが発生したときに対象のノード番号がセットされます。\\ ^ イベント ^ 対象 ^ | onConnect | 新たに接続したノード | | onDisconnect | 何らかの理由で接続が途絶えた、もしくは切断要求があったノード | | onRecv | データを送信したノード | | serve | サーバ処理を行うノード | 呼び出されたハンドラから本関数を呼び出すことで、ノードに対して操作を行うことができます。\\ 例えば、接続したノードに対してメッセージを送信する場合、onConnectハンドラから\\sub onconnect { my $self = shift; my $from = $self->from(); # 接続したノード番号を取得 $self->send( $from, "Hello!\r\n" ); # 接続したノードにメッセージを送信 }また、切断するノードに対してメッセージを送信する場合、onDisconnectハンドラから\\sub ondisconnect { my $self = shift; my $from = $self->from(); # 切断するノード番号を取得 $self->send( $from, "Bye!\r\n" ); # 切断するノードにメッセージを送信 }のように定義します。\\'from_' で始まる関数は操作を行う際、操作対象のノード番号が自動的にセットされます。\\ 例えば、上記、切断するノードに対してメッセージを送信する場合は\\ sub ondisconnect { my $self = shift; $self->from_send( "Bye!\r\n" ); # 切断するノードにメッセージを送信 }のように、一行で定義することができます。\\ イベントを発生したノードに対して操作や処理を行う場合は from 付き関数を使用する方がスマートですが、イベントを発生したノードから他のノードへ操作を行うような場合は、from なしの関数で操作するノード番号を指定して行います。