Обработка данных любого типа
Сообщения, которые могут быть представлены в формате JSON (символы, числа, и т.д.), а также списки, правила, или ассоциации, содержащие эти элементы, приведены в буквальной форме.
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]=
Сообщения, содержащие код, надежно передаются через HoldComplete, что даёт пользователю возможность изучить их перед оценкой.
In[4]:=
ChannelSend["example", Unevaluated[Print["hello"]]];In[5]:=
listener["Message"]Out[5]=
In[6]:=
listener["Message"] // ReleaseHoldСоздадим канал, который передает документ в сжатом формате и открывает полученный документ в таком же формате в новом окне.
In[7]:=

CreateChannel["nb", ChannelPreSendFunction -> (Compress[#1] &),
HandlerFunctions ->
Association[
"MessageReceived" -> (CreateWindow[Uncompress[#Message]] &)]]Out[7]=
Начнём прослушивать информацию на данном канале.
In[8]:=
listener = ChannelListen["nb"]Out[8]=

Создадим документ и отправим его через данный канал.
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]=
Полученный документ.
Out[11]=
