Procesamiento de cualquier tipo de datos
Los mensajes que pueden ser representados en el formato JSON (cadenas de caracteres, números, True, False o Null), o listas, reglas, o asociaciones que contengan tales elementos, son dados literalmente.
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]=
Los mensajes que contengan código son envueltos de forma segura en HoldComplete, permitiéndole examinarlos antes de evaluarlos.
In[4]:=
ChannelSend["example", Unevaluated[Print["hello"]]];
In[5]:=
listener["Message"]
Out[5]=
In[6]:=
listener["Message"] // ReleaseHold
Cree un canal que envíe un cuaderno comprimido y que abra el cuaderno recibido en una nueva ventana.
In[7]:=
CreateChannel["nb", ChannelPreSendFunction -> (Compress[#1] &),
HandlerFunctions ->
Association[
"MessageReceived" -> (CreateWindow[Uncompress[#Message]] &)]]
Out[7]=
Comience a escuchar en el canal.
In[8]:=
listener = ChannelListen["nb"]
Out[8]=
Cree un cuaderno y envíelo al 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]=
El cuaderno recibido.
Out[11]=