ChannelListen

ChannelListen[channel]

指定のチャネルを聞き始める.

ChannelListen[channel,func]

チャネルで受信した各メッセージに対応する連想に func を適用する.

ChannelListen[channel,None]

チャネルで受信した各メッセージを,いかなる関数も適用せずに保存する.

ChannelListen[url]

チャネルブローカ上に明示的なチャネルの存在を要求せずに,指定されたURLを聞き,受信したメッセージをソートする.

詳細とオプション

  • ChannelListen[]ChannelListenerオブジェクトを与える.
  • ChannelListen[channel,]では,channel はチャネルオブジェクトとして,あるいはChannelObject内で使われている任意の形で指定することができる.
  • ChannelListen[channel]ChannelListen[channel,Automatic]に等しい.
  • func は,ChannelListen[channel,func]内で指定された場合は channel"MessageReceived"ハンドラを無効にする.channel は次の要素を含む連想によって呼ばれる.
  • "Message"メッセージのコンテンツ
    "MessageID"一意のメッセージID
    "Timestamp"メッセージについてのサーバタイムスタンプ
    "RequesterWolframID"送信者のWolfram ID
    "RequesterWolframUUID"送信者のWolfram UUID
    "ListenerID"現行リスナのID
  • メッセージのコンテンツは,メッセージが文字列,RealIntegerByteArrayTrueFalseNullImageImage3D,あるいはそのようなオブジェクトのリストまたは連想の場合は,文字通りに与えられる.その他のメッセージはすべてHoldComplete[DisableFormatting[expr]]形式か"name"DisableFormatting[val]の形の遅延規則のリストか連想としてで与えられる.
  • セキュリティのために,ホールドされた式の一部や遅延規則の右辺,あるいは文字列メッセージにToExpressionを適用する等の未評価のメッセージの内容には注意してアクセスすべきである.
  • ChannelListenには次のオプションが使える.
  • AutoRemove Falseメッセージを1つ受信した後でリスナを削除するかどうか
    ChannelBase$ChannelBase仮定するデフォルトのチャネルベース
    ChannelHistoryLength 100リスナのキャッシュにいくつのメッセージを保存するか
    NotificationFunction Inheritedメッセージが届いた際に与える通知
  • ChannelListenが設定したチャネルリスナはRemoveChannelListenerで削除することができる.
  • チャネルリスナを削除するとリスナがキャッシュしたメッセージも破棄される.
  • Wolfram言語セッションを終了するとアクティブなチャネルリスナが削除される.

例題

すべて開くすべて閉じる

  (2)

チャネルを作成し,聞き始める:

チャネルにメッセージを送り,リスナからメッセージのコンテンツを取り出す:

リスナを取り除いてチャネルを削除する:

メッセージが到着すると実行されるカスタムハンドラ関数を定義する:

チャネルにメッセージを送るとこの関数が呼ばれる:

メッセージはChannelListenerオブジェクトにも記録される:

リスナを取り除いてチャネルを削除する:

スコープ  (4)

チャネル指定  (2)

ChannelObjectで定義されたチャネルを聞く:

チャネルブローカサーバー上のホームエリアのチャネルを,名前を指定して聞く:

完全修飾名で指定されたチャネルを聞く:

完全URLで指定されたチャネルを聞く:

チャネルを削除する.こうするとリスナも削除される:

サーバ上の共通エリアのURLで指定されたチャネルを聞く:

チャネルを削除する.こうするとリスナも削除される:

ハンドラ  (2)

ハンドラ関数が受信した引数を調べる:

チャネルにメッセージを送信するとハンドラが受信した連想が出力される:

チャネルを削除する.こうするとリスナも削除される:

メッセージが受信されたときはハンドラ関数を実行しない:

それでも,チャネルに送信されたメッセージを取り出すことはできる:

チャネルを削除する.こうするとリスナも削除される:

オプション  (3)

AutoRemove  (1)

最初のメッセージの受信後に自らを削除するリスナを起動する:

リスナはアクティブである:

メッセージが送信され処理された後でこのリスナは削除される:

チャネルを削除する:

ChannelHistoryLength  (1)

ChannelHistoryLengthを10に設定してチャネルリスナを作成する:

チャネルに20のメッセージを送信する:

最も最近受信された10のメッセージだけが保存されている:

チャネルを削除する.こうするとリスナも削除される:

NotificationFunction  (1)

リスナ内にカスタムの通知関数を定義する:

メッセージが送信され処理されるとこの関数が実行される:

チャネルを削除する.こうするとリスナも削除される:

アプリケーション  (4)

電子メール  (1)

デスクトップセッションで受信したメッセージの件名を読み上げるリスナを設定する:

受信したメールを自分のリスナに転送するMailReceiverFunctionを作る:

受信器関数に電子メールを送り,リスナが読み上げるのを聞く:

チャネルを削除する.こうするとリスナも削除される:

リモート評価  (1)

自分のWolfram Cloudアカウント,あるいは他のリモートのWolframシステムで,受信したメッセージを評価し,指定のチャネルに結果を送り返すリスナを設定する:

ローカルシステム上に受信チャネルを設定する:

コマンドをリモートの評価器に送る:

受信した応答にアクセスする:

結果が別のマシンから来ていることを確かめる:

きれいにする:

Wolfram Cloud  (1)

ChannelListenを使うと現行のセッションでAPIFunctionFormFunction,あるいはその他の関数がWolfram Cloudで実行された際に,アップデートが受信できる:

単純な操作を行って結果をメタデータと一緒にリスナに送信するWebページを配備する:

リスナはWebフォームが送信されると動的に更新される:

チャネルを削除する:

ソーシャルメディア  (1)

HTTPリクエストのコンテンツをチャネルに転送するAPIFunctionを作る:

Twitter上の「Mathematica」という単語への言及を追跡して,これをHTTPを介してAPIFunctionに送信するIFTTTアプレットを作る:

このチャネル上にリスナを作る:

Twitterへのサービスを接続し,キーワードを含むツイートを送信する:

リスナが受信したメッセージをリストにする:

チャネルを削除する:

特性と関係  (3)

ChannelListenChannelListenerオブジェクトを返す:

リスナについてクエリを行い,特性を取り出すことができる:

チャネルを削除する.こうするとリスナも削除される:

RemoveChannelListenerを使ってChannelListenerオブジェクトを取り除く:

チャネルを削除する:

デスクトップのWolframシステムでは,メッセージハンドラ関数内で実行されたPrintの出力は,メッセージウィンドウに表示される:

チャネルを削除する.こうするとリスナも削除される:

考えられる問題  (1)

セキュリティ上の理由から,デフォルトで,他のユーザのチャネルを聞くことはできない:

自分のコンピュータ上でメッセージハンドラ関数を実行されてもよいほどチャネルの作者を信頼しているのなら,セキュリティの設定を一時的に無効にすることができる:

デフォルトに戻す:

おもしろい例題  (1)

チャネルを聞き,受信すると同時に動的に点をプロットするようにする:

現行セッションから,あるいはインターネットに接続している他の任意のWolframセッションから,チャネルにデータを送る:

チャネルURLに定期的に点を送るタスクを設定する:

データの送信を中止し,チャネルを削除する:

Wolfram Research (2016), ChannelListen, Wolfram言語関数, https://reference.wolfram.com/language/ref/ChannelListen.html (2020年に更新).

テキスト

Wolfram Research (2016), ChannelListen, Wolfram言語関数, https://reference.wolfram.com/language/ref/ChannelListen.html (2020年に更新).

CMS

Wolfram Language. 2016. "ChannelListen." Wolfram Language & System Documentation Center. Wolfram Research. Last Modified 2020. https://reference.wolfram.com/language/ref/ChannelListen.html.

APA

Wolfram Language. (2016). ChannelListen. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/ChannelListen.html

BibTeX

@misc{reference.wolfram_2024_channellisten, author="Wolfram Research", title="{ChannelListen}", year="2020", howpublished="\url{https://reference.wolfram.com/language/ref/ChannelListen.html}", note=[Accessed: 21-November-2024 ]}

BibLaTeX

@online{reference.wolfram_2024_channellisten, organization={Wolfram Research}, title={ChannelListen}, year={2020}, url={https://reference.wolfram.com/language/ref/ChannelListen.html}, note=[Accessed: 21-November-2024 ]}