ChannelSend

ChannelSend[channel,msg]

指定のメッセージ msg を指定のチャネルに送る.

詳細とオプション

  • ChannelSend[channel,]では,channel はチャネルオブジェクトとして,あるいはChannelObject内で使われている任意の形で指定することができる.
  • メッセージ msg は任意の式でよい.
  • デフォルト設定の$AllowExternalChannelFunctions=Falseでは,ChannelSend[channel,]は認定チャネルとユーザ所有のチャネルにしか使えない.
  • すべてのメッセージは,チャネルブローカサーバを介して送信される前に内部でWXFにシリアル化される.ただし,そのままの文字列はそのまま送信される.
  • 将来リリースされる可能性のあるWolfram言語ベースっではないチャネルブローカクライアントは,文字列メッセージのみをサポートする可能性が高いため,プログラムのメッセージをそのようなクライアントと前方互換にする場合は,JSONXMLのような言語に依存しない文字列形式で符号化することが推奨される.
  • ChannelSendはメッセージがブローカに送信されるまでブロックするだけである.ブローカの受領を確認するまで待機はしない.

例題

すべて開くすべて閉じる

  (1)

チャネルを聞き始め,そのチャネルにメッセージを送る:

チャネルにメッセージを送る:

ChannelListenerオブジェクトのために指定されたフォームを使ったリスナからのメッセージも可能である:

チャネルを削除する:

スコープ  (2)

メッセージを連想として送る:

規則あるいは規則のリストとして送る:

任意のWolfram言語コードとして送る:

現行のノートブックを送る:

完了する:

JSON文字列として符号化されたデータを送信するチャネルを作る:

チャネルを聞き始める:

データを符号化して送信する:

受信されたデータを取り出して復号化する:

完了する:

アプリケーション  (1)

圧縮したノートブックを受信して新規ウィンドウで開くチャネルリスナ:

ノートブックを作成し,そのチャネルに送る:

受け取ったノートブック:

完了する:

特性と関係  (2)

ChannelSendで送られたメッセージは,ChannelListenで作ったリスナで受け取ることができる:

完了する:

ChannelSendが送信したメッセージは,セキュリティのために,内容によってはチャネルリスナによって未評価のままで置かれるかもしれない:

myFunctionへの呼び出しは HoldComplete でラップされて読まれる:

完了する:

考えられる問題  (1)

ChannelSendは非同期に戻るため,チャネルに送信されたメッセージをそのチャネルに接続されたリスナが直ちに利用できるわけではない:

メッセージを送信し,直ちにリスナから取り出そうとする:

メッセージの送信後に短いポーズを挟むと,リスナがメッセージを受信する時間ができる:

Whileループを使ってメッセージがリスナから利用できるようになるまで待つこともできる:

完了する:

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

テキスト

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

CMS

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

APA

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

BibTeX

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

BibLaTeX

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