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]:=
listener = ChannelListen["example"]
Out[1]=
In[2]:=
(ChannelSend["example", #]) & /@ {"string", 100, True, {1, 2, 3},
"a" -> "b", {"c" -> 1}, <|"d" -> True|>};
In[3]:=
listener["Message", All]
Out[3]=
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]:=
ChannelSend["example", Unevaluated[Print["hello"]]];
In[5]:=
listener["Message"]
Out[5]=
In[6]:=
listener["Message"] // ReleaseHold
Créez un canal qui envoie un notebook comprimé et ouvrez le notebook reçu dans une nouvelle fenêtre.
In[7]:=
CreateChannel["nb", ChannelPreSendFunction -> (Compress[#1] &),
HandlerFunctions ->
Association[
"MessageReceived" -> (CreateWindow[Uncompress[#Message]] &)]]
Out[7]=
Commencez à écouter sur le canal.
In[8]:=
listener = ChannelListen["nb"]
Out[8]=
Créez un notebook et envoyez-le au canal.
In[9]:=
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]=
In[10]:=
ChannelSend["nb", nb]
Out[10]=
Le notebook reçu.
Out[11]=