Processe quaisquer tipos de dados
As mensagens que podem ser representadas no formato JSON (cadeias de caracteres, números, True, False, ou Null), ou listas, regras, ou associações que possuem tais elementos, são dados literalmente.
In[1]:=
![Click for copyable input](assets.pt-br/process-any-type-of-data/In_20.png)
listener = ChannelListen["example"]
Out[1]=
![](assets.pt-br/process-any-type-of-data/O_21.png)
In[2]:=
![Click for copyable input](assets.pt-br/process-any-type-of-data/In_21.png)
(ChannelSend["example", #]) & /@ {"string", 100, True, {1, 2, 3},
"a" -> "b", {"c" -> 1}, <|"d" -> True|>};
In[3]:=
![Click for copyable input](assets.pt-br/process-any-type-of-data/In_22.png)
listener["Message", All]
Out[3]=
![](assets.pt-br/process-any-type-of-data/O_22.png)
Mensagens que contenham código são incluídas de forma segura em HoldComplete, permitindo que sejam examinadas antes de serem executadas.
In[4]:=
![Click for copyable input](assets.pt-br/process-any-type-of-data/In_23.png)
ChannelSend["example", Unevaluated[Print["hello"]]];
In[5]:=
![Click for copyable input](assets.pt-br/process-any-type-of-data/In_24.png)
listener["Message"]
Out[5]=
![](assets.pt-br/process-any-type-of-data/O_23.png)
In[6]:=
![Click for copyable input](assets.pt-br/process-any-type-of-data/In_25.png)
listener["Message"] // ReleaseHold
![](assets.pt-br/process-any-type-of-data/O_24.png)
Crie um canal que envie um notebook compactado e abra o notebook recebido em uma nova janela.
In[7]:=
![Click for copyable input](assets.pt-br/process-any-type-of-data/In_26.png)
CreateChannel["nb", ChannelPreSendFunction -> (Compress[#1] &),
HandlerFunctions ->
Association[
"MessageReceived" -> (CreateWindow[Uncompress[#Message]] &)]]
Out[7]=
![](assets.pt-br/process-any-type-of-data/O_25.png)
Comece a ouvir no canal.
In[8]:=
![Click for copyable input](assets.pt-br/process-any-type-of-data/In_27.png)
listener = ChannelListen["nb"]
Out[8]=
![](assets.pt-br/process-any-type-of-data/O_26.png)
Crie um notebook e envie para o canal.
In[9]:=
![Click for copyable input](assets.pt-br/process-any-type-of-data/In_28.png)
nb = DocumentNotebook[{TextCell["My Report", "Section"],
TextCell["Lorem ipsum dolor sit amet:", "Text"],
ExpressionCell[
ContourPlot[x + Sin[x^2 + y^2], {x, -4, 4}, {y, -4, 4},
Contours -> 9, ContourShading -> ColorData[35, "ColorList"]]]},
StyleDefinitions -> FrontEnd`FileName[{"Article"}, "Preprint.nb"],
WindowTitle -> "My Report", Background -> LightOrange]
Out[9]=
![](assets.pt-br/process-any-type-of-data/O_27.png)
In[10]:=
![Click for copyable input](assets.pt-br/process-any-type-of-data/In_29.png)
ChannelSend["nb", nb]
Out[10]=
![](assets.pt-br/process-any-type-of-data/O_28.png)
O notebook recebido.
Out[11]=
![](assets.pt-br/process-any-type-of-data/O_29.png)