Traitez tout type de données
Les messages qui peuvent être représentés au format JSON (des chaînes, des nombres, True, False ou Null), ou encore des listes, des règles ou des associations contenant ces éléments, sont donnés littéralement.
In[1]:=
![Click for copyable input](assets.fr/process-any-type-of-data/In_20.png)
listener = ChannelListen["example"]
Out[1]=
![](assets.fr/process-any-type-of-data/O_21.png)
In[2]:=
![Click for copyable input](assets.fr/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.fr/process-any-type-of-data/In_22.png)
listener["Message", All]
Out[3]=
![](assets.fr/process-any-type-of-data/O_22.png)
Les messages contenant le code sont enveloppés en toute sécurité dans HoldComplete, vous donnant l'occasion de les examiner avant de les évaluer.
In[4]:=
![Click for copyable input](assets.fr/process-any-type-of-data/In_23.png)
ChannelSend["example", Unevaluated[Print["hello"]]];
In[5]:=
![Click for copyable input](assets.fr/process-any-type-of-data/In_24.png)
listener["Message"]
Out[5]=
![](assets.fr/process-any-type-of-data/O_23.png)
In[6]:=
![Click for copyable input](assets.fr/process-any-type-of-data/In_25.png)
listener["Message"] // ReleaseHold
![](assets.fr/process-any-type-of-data/O_24.png)
Créez un canal qui envoie un notebook comprimé et ouvrez le notebook reçu dans une nouvelle fenêtre.
In[7]:=
![Click for copyable input](assets.fr/process-any-type-of-data/In_26.png)
CreateChannel["nb", ChannelPreSendFunction -> (Compress[#1] &),
HandlerFunctions ->
Association[
"MessageReceived" -> (CreateWindow[Uncompress[#Message]] &)]]
Out[7]=
![](assets.fr/process-any-type-of-data/O_25.png)
Commencez à écouter sur le canal.
In[8]:=
![Click for copyable input](assets.fr/process-any-type-of-data/In_27.png)
listener = ChannelListen["nb"]
Out[8]=
![](assets.fr/process-any-type-of-data/O_26.png)
Créez un notebook et envoyez-le au canal.
In[9]:=
![Click for copyable input](assets.fr/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.fr/process-any-type-of-data/O_27.png)
In[10]:=
![Click for copyable input](assets.fr/process-any-type-of-data/In_29.png)
ChannelSend["nb", nb]
Out[10]=
![](assets.fr/process-any-type-of-data/O_28.png)
Le notebook reçu.
Out[11]=
![](assets.fr/process-any-type-of-data/O_29.png)