Skip to content

Instantly share code, notes, and snippets.

@mikedewar
Created November 14, 2015 04:11
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mikedewar/7d4d78fcc62a238cff1c to your computer and use it in GitHub Desktop.
Save mikedewar/7d4d78fcc62a238cff1c to your computer and use it in GitHub Desktop.
pubsub
{"label":"pubsub","blocks":[{"label":"","type":"endpoint","id":8,"inputs":[{"name":"name","value":{"data":"bob"},"type":"string"}],"outputs":[{"name":"request","type":"object"},{"name":"writer","type":"writer"},{"name":"body","type":"string"}],"source":"server","position":{"x":543,"y":83}},{"label":"","type":"kvSet","id":9,"inputs":[{"name":"key","value":null,"type":"string"},{"name":"value","value":null,"type":"any"}],"outputs":[{"name":"new","type":"boolean"}],"source":"key_value","position":{"x":748,"y":153}},{"label":"","type":"kvDump","id":2,"inputs":[{"name":"dump","value":null,"type":"any"}],"outputs":[{"name":"object","type":"object"}],"source":"key_value","position":{"x":516,"y":465}},{"label":"","type":"sink","id":11,"inputs":[{"name":"in","value":null,"type":"any"}],"outputs":[],"source":null,"position":{"x":916,"y":89}},{"label":"","type":"keys","id":3,"inputs":[{"name":"in","value":null,"type":"object"}],"outputs":[{"name":"keys","type":"array"}],"source":null,"position":{"x":654,"y":589}},{"label":"","type":"kvGet","id":4,"inputs":[{"name":"key","value":null,"type":"string"}],"outputs":[{"name":"value","type":"any"}],"source":"key_value","position":{"x":1218,"y":330}},{"label":"","type":"delay","id":12,"inputs":[{"name":"in","value":{"data":1},"type":"any"},{"name":"duration","value":{"data":"1s"},"type":"string"}],"outputs":[{"name":"out","type":"any"}],"source":null,"position":{"x":321,"y":563}},{"label":"","type":"len","id":53,"inputs":[{"name":"in","value":null,"type":"array"}],"outputs":[{"name":"out","type":"number"}],"source":null,"position":{"x":797,"y":778}},{"label":"","type":"\u003e","id":56,"inputs":[{"name":"x","value":null,"type":"number"},{"name":"y","value":{"data":0},"type":"number"}],"outputs":[{"name":"x\u003ey","type":"boolean"}],"source":null,"position":{"x":892,"y":863}},{"label":"","type":"latch","id":54,"inputs":[{"name":"in","value":null,"type":"any"},{"name":"ctrl","value":null,"type":"boolean"}],"outputs":[{"name":"true","type":"any"},{"name":"false","type":"any"}],"source":null,"position":{"x":999,"y":822}},{"label":"","type":"sink","id":55,"inputs":[{"name":"in","value":null,"type":"any"}],"outputs":[],"source":null,"position":{"x":1118,"y":902}},{"label":"","type":"head","id":5,"inputs":[{"name":"in","value":null,"type":"array"}],"outputs":[{"name":"head","type":"any"}],"source":null,"position":{"x":1220,"y":588}},{"label":"","type":"tail","id":6,"inputs":[{"name":"in","value":null,"type":"array"}],"outputs":[{"name":"tail","type":"array"}],"source":null,"position":{"x":1238,"y":660}},{"label":"","type":"latch","id":15,"inputs":[{"name":"in","value":null,"type":"any"},{"name":"ctrl","value":null,"type":"boolean"}],"outputs":[{"name":"true","type":"any"},{"name":"false","type":"any"}],"source":null,"position":{"x":1265,"y":749}},{"label":"","type":"len","id":13,"inputs":[{"name":"in","value":null,"type":"array"}],"outputs":[{"name":"out","type":"number"}],"source":null,"position":{"x":1129,"y":889}},{"label":"","type":"\u003e","id":14,"inputs":[{"name":"x","value":null,"type":"number"},{"name":"y","value":{"data":0},"type":"number"}],"outputs":[{"name":"x\u003ey","type":"boolean"}],"source":null,"position":{"x":1346,"y":923}},{"label":"","type":"sink","id":16,"inputs":[{"name":"in","value":null,"type":"any"}],"outputs":[],"source":null,"position":{"x":1483,"y":790}},{"label":"","type":"write","id":10,"inputs":[{"name":"writer","value":null,"type":"writer"},{"name":"msg","value":{"data":"hi"},"type":"any"}],"outputs":[{"name":"writer","type":"writer"}],"source":null,"position":{"x":1407,"y":351}},{"label":"","type":"flush","id":17,"inputs":[{"name":"writer","value":null,"type":"writer"}],"outputs":[{"name":"writer","type":"writer"}],"source":null,"position":{"x":1566,"y":327}},{"label":"","type":"isError","id":118,"inputs":[{"name":"in","value":null,"type":"any"}],"outputs":[{"name":"out","type":"boolean"}],"source":null,"position":{"x":1601,"y":702}},{"label":"","type":"latch","id":117,"inputs":[{"name":"in","value":null,"type":"any"},{"name":"ctrl","value":null,"type":"boolean"}],"outputs":[{"name":"true","type":"any"},{"name":"false","type":"any"}],"source":null,"position":{"x":1681,"y":599}},{"label":"","type":"sink","id":18,"inputs":[{"name":"in","value":null,"type":"any"}],"outputs":[],"source":null,"position":{"x":1768,"y":337}},{"label":"","type":"kvDelete","id":123,"inputs":[{"name":"key","value":null,"type":"string"}],"outputs":[{"name":"deleted","type":"boolean"}],"source":"key_value","position":{"x":1795,"y":475}},{"label":"","type":"sink","id":121,"inputs":[{"name":"in","value":null,"type":"any"}],"outputs":[],"source":null,"position":{"x":2025,"y":605}}],"connections":[{"from":{"id":14,"route":0},"to":{"id":15,"route":1},"id":47},{"from":{"id":13,"route":0},"to":{"id":14,"route":0},"id":28},{"from":{"id":12,"route":0},"to":{"id":2,"route":0},"id":29},{"from":{"id":4,"route":0},"to":{"id":10,"route":0},"id":31},{"from":{"id":17,"route":0},"to":{"id":18,"route":0},"id":38},{"from":{"id":8,"route":1},"to":{"id":9,"route":1},"id":36},{"from":{"id":54,"route":0},"to":{"id":6,"route":0},"id":63},{"from":{"id":3,"route":0},"to":{"id":54,"route":0},"id":64},{"from":{"id":117,"route":0},"to":{"id":123,"route":0},"id":126},{"from":{"id":6,"route":0},"to":{"id":15,"route":0},"id":49},{"from":{"id":8,"route":2},"to":{"id":9,"route":0},"id":42},{"from":{"id":17,"route":0},"to":{"id":118,"route":0},"id":125},{"from":{"id":8,"route":0},"to":{"id":11,"route":0},"id":32},{"from":{"id":2,"route":0},"to":{"id":3,"route":0},"id":34},{"from":{"id":10,"route":0},"to":{"id":17,"route":0},"id":39},{"from":{"id":5,"route":0},"to":{"id":4,"route":0},"id":41},{"from":{"id":56,"route":0},"to":{"id":54,"route":1},"id":59},{"from":{"id":54,"route":0},"to":{"id":5,"route":0},"id":62},{"from":{"id":123,"route":0},"to":{"id":121,"route":0},"id":127},{"from":{"id":5,"route":0},"to":{"id":117,"route":0},"id":119},{"from":{"id":117,"route":1},"to":{"id":121,"route":0},"id":122},{"from":{"id":9,"route":0},"to":{"id":11,"route":0},"id":22},{"from":{"id":15,"route":1},"to":{"id":16,"route":0},"id":50},{"from":{"id":54,"route":1},"to":{"id":55,"route":0},"id":57},{"from":{"id":15,"route":0},"to":{"id":6,"route":0},"id":51},{"from":{"id":15,"route":0},"to":{"id":5,"route":0},"id":114},{"from":{"id":118,"route":0},"to":{"id":117,"route":1},"id":120},{"from":{"id":6,"route":0},"to":{"id":13,"route":0},"id":48},{"from":{"id":53,"route":0},"to":{"id":56,"route":0},"id":58},{"from":{"id":3,"route":0},"to":{"id":53,"route":0},"id":61}],"groups":[{"id":130,"label":"pubsub","children":[21,8,20,9,2,11,3,4,12,60,129,10,17,118,117,18,123,121],"position":{"x":1079,"y":415}},{"id":60,"label":"array not empty","children":[53,56,54,55],"position":{"x":819,"y":658}},{"id":129,"label":"unpack","children":[5,6,15,13,14,16],"position":{"x":1121,"y":646}}],"sources":[{"label":"","type":"server","id":21,"position":{"x":348,"y":138},"params":[{"name":"port","value":"0"}]},{"label":"","type":"key_value","id":20,"position":{"x":381,"y":352},"params":[]}],"links":[{"source":{"id":21},"block":{"id":8},"id":45},{"source":{"id":20},"block":{"id":9},"id":46},{"source":{"id":20},"block":{"id":123},"id":124},{"source":{"id":20},"block":{"id":2},"id":43},{"source":{"id":20},"block":{"id":4},"id":44}]}
@mikedewar
Copy link
Author

image

@mikedewar
Copy link
Author

A pubsub example. Here, subscriptions (in the form of long lived HTTP streams) are requested via an HTTP endpoint, and registered in a key value store. Every time there is a new message to publish, the key value store is dumped, each writer is written to, flushed, and sunk.

If the writer returns an error, it is removed from the key value store - this occurs when the client has disconnected.

@nikhan
Copy link

nikhan commented Nov 15, 2015

hmm... if i add a second connection the first connection hangs :(

@nikhan
Copy link

nikhan commented Nov 15, 2015

it looks like using the 'body' output on the endpoint was producing an empty string for me. I added a counter to use a key for each writer:

{"blocks":[{"label":"","type":"server","id":266,"position":{"x":348,"y":138},"params":[{"name":"port","value":"0"}]},{"label":"","type":"endpoint","id":242,"inputs":[{"name":"name","value":{"data":"bob"},"type":"string"}],"outputs":[{"name":"request","type":"object"},{"name":"writer","type":"writer"},{"name":"body","type":"string"}],"source":"server","position":{"x":543,"y":83}},{"label":"","type":"key_value","id":267,"position":{"x":381,"y":352},"params":[]},{"label":"","type":"kvSet","id":243,"inputs":[{"name":"key","value":null,"type":"string"},{"name":"value","value":null,"type":"any"}],"outputs":[{"name":"new","type":"boolean"}],"source":"key_value","position":{"x":747,"y":172}},{"label":"","type":"kvDump","id":244,"inputs":[{"name":"dump","value":null,"type":"any"}],"outputs":[{"name":"object","type":"object"}],"source":"key_value","position":{"x":516,"y":465}},{"label":"","type":"sink","id":245,"inputs":[{"name":"in","value":null,"type":"any"}],"outputs":[],"source":null,"position":{"x":916,"y":67}},{"label":"","type":"keys","id":246,"inputs":[{"name":"in","value":null,"type":"object"}],"outputs":[{"name":"keys","type":"array"}],"source":null,"position":{"x":654,"y":589}},{"label":"","type":"kvGet","id":247,"inputs":[{"name":"key","value":null,"type":"string"}],"outputs":[{"name":"value","type":"any"}],"source":"key_value","position":{"x":1218,"y":330}},{"label":"","type":"delay","id":248,"inputs":[{"name":"in","value":{"data":1},"type":"any"},{"name":"duration","value":{"data":"1s"},"type":"string"}],"outputs":[{"name":"out","type":"any"}],"source":null,"position":{"x":321,"y":563}},{"label":"","type":"len","id":249,"inputs":[{"name":"in","value":null,"type":"array"}],"outputs":[{"name":"out","type":"number"}],"source":null,"position":{"x":797,"y":778}},{"label":"","type":">","id":250,"inputs":[{"name":"x","value":null,"type":"number"},{"name":"y","value":{"data":0},"type":"number"}],"outputs":[{"name":"x>y","type":"boolean"}],"source":null,"position":{"x":892,"y":863}},{"label":"","type":"latch","id":251,"inputs":[{"name":"in","value":null,"type":"any"},{"name":"ctrl","value":null,"type":"boolean"}],"outputs":[{"name":"true","type":"any"},{"name":"false","type":"any"}],"source":null,"position":{"x":999,"y":822}},{"label":"","type":"sink","id":252,"inputs":[{"name":"in","value":null,"type":"any"}],"outputs":[],"source":null,"position":{"x":1118,"y":902}},{"label":"","type":"head","id":253,"inputs":[{"name":"in","value":null,"type":"array"}],"outputs":[{"name":"head","type":"any"}],"source":null,"position":{"x":1220,"y":588}},{"label":"","type":"tail","id":254,"inputs":[{"name":"in","value":null,"type":"array"}],"outputs":[{"name":"tail","type":"array"}],"source":null,"position":{"x":1238,"y":660}},{"label":"","type":"latch","id":255,"inputs":[{"name":"in","value":null,"type":"any"},{"name":"ctrl","value":null,"type":"boolean"}],"outputs":[{"name":"true","type":"any"},{"name":"false","type":"any"}],"source":null,"position":{"x":1265,"y":749}},{"label":"","type":"len","id":256,"inputs":[{"name":"in","value":null,"type":"array"}],"outputs":[{"name":"out","type":"number"}],"source":null,"position":{"x":1129,"y":889}},{"label":"","type":">","id":257,"inputs":[{"name":"x","value":null,"type":"number"},{"name":"y","value":{"data":0},"type":"number"}],"outputs":[{"name":"x>y","type":"boolean"}],"source":null,"position":{"x":1346,"y":923}},{"label":"","type":"sink","id":258,"inputs":[{"name":"in","value":null,"type":"any"}],"outputs":[],"source":null,"position":{"x":1483,"y":790}},{"label":"","type":"write","id":259,"inputs":[{"name":"writer","value":null,"type":"writer"},{"name":"msg","value":{"data":"hi"},"type":"any"}],"outputs":[{"name":"writer","type":"writer"}],"source":null,"position":{"x":1407,"y":351}},{"label":"","type":"flush","id":260,"inputs":[{"name":"writer","value":null,"type":"writer"}],"outputs":[{"name":"writer","type":"writer"}],"source":null,"position":{"x":1566,"y":327}},{"label":"","type":"isError","id":261,"inputs":[{"name":"in","value":null,"type":"any"}],"outputs":[{"name":"out","type":"boolean"}],"source":null,"position":{"x":1601,"y":702}},{"label":"","type":"latch","id":262,"inputs":[{"name":"in","value":null,"type":"any"},{"name":"ctrl","value":null,"type":"boolean"}],"outputs":[{"name":"true","type":"any"},{"name":"false","type":"any"}],"source":null,"position":{"x":1681,"y":599}},{"label":"","type":"sink","id":263,"inputs":[{"name":"in","value":null,"type":"any"}],"outputs":[],"source":null,"position":{"x":1768,"y":337}},{"label":"","type":"kvDelete","id":264,"inputs":[{"name":"key","value":null,"type":"string"}],"outputs":[{"name":"deleted","type":"boolean"}],"source":"key_value","position":{"x":1795,"y":475}},{"label":"","type":"sink","id":265,"inputs":[{"name":"in","value":null,"type":"any"}],"outputs":[],"source":null,"position":{"x":2025,"y":605}},{"label":"","type":"latch","id":306,"inputs":[{"name":"in","value":null,"type":"any"},{"name":"ctrl","value":null,"type":"boolean"}],"outputs":[{"name":"true","type":"any"},{"name":"false","type":"any"}],"source":null,"position":{"x":358,"y":348}},{"label":"","type":"first","id":307,"inputs":[{"name":"in","value":null,"type":"any"}],"outputs":[{"name":"first","type":"boolean"}],"source":null,"position":{"x":249,"y":417}},{"label":"","type":"identity","id":308,"inputs":[{"name":"in","value":{"data":0},"type":"any"}],"outputs":[{"name":"out","type":"any"}],"source":null,"position":{"x":147,"y":320}},{"label":"","type":"+","id":311,"inputs":[{"name":"x","value":null,"type":"number"},{"name":"y","value":{"data":1},"type":"number"}],"outputs":[{"name":"x+y","type":"number"}],"source":null,"position":{"x":552,"y":355}},{"label":"","type":"identity","id":322,"inputs":[{"name":"in","value":null,"type":"any"}],"outputs":[{"name":"out","type":"any"}],"source":null,"position":{"x":550,"y":523}},{"label":"","type":"toString","id":321,"inputs":[{"name":"in","value":null,"type":"any"}],"outputs":[{"name":"out","type":"string"}],"source":null,"position":{"x":603,"y":-18}},{"label":"","type":"log","id":327,"inputs":[{"name":"log","value":null,"type":"any"}],"outputs":[],"source":null,"position":{"x":1066,"y":167}}],"sources":[{"label":"","type":"server","id":266,"position":{"x":348,"y":138},"params":[{"name":"port","value":"0"}]},{"label":"","type":"key_value","id":267,"position":{"x":381,"y":352},"params":[]}],"links":[],"connections":[],"groups":[{"id":239,"label":"pubsub","children":[266,242,267,243,244,245,246,247,248,240,241,259,260,261,262,263,264,265,305,321,327],"position":{"x":322,"y":23}}]}

and it seems to be working fine for multiple clients now
screen shot 2015-11-15 at 1 55 04 am

curl -N btw!

@nikhan
Copy link

nikhan commented Nov 15, 2015

ha! ok. funny thing: if you make the "msg" on the writer a stream instead of a set value "hi" it does alternates which writer gets which message. so I put an counter there, and one curl would get 1, 3, 5, 7 while the other got 2, 4, 6.

I made a pattern so that you could broadcast a message, just to see if i could:
screen shot 2015-11-15 at 2 12 53 am

edit WOW this pattern is messed up!

{"blocks":[{"label":"","type":"server","id":266,"position":{"x":416,"y":75},"params":[{"name":"port","value":"0"}]},{"label":"","type":"endpoint","id":242,"inputs":[{"name":"name","value":{"data":"bob"},"type":"string"}],"outputs":[{"name":"request","type":"object"},{"name":"writer","type":"writer"},{"name":"body","type":"string"}],"source":"server","position":{"x":543,"y":83}},{"label":"","type":"key_value","id":267,"position":{"x":492,"y":350},"params":[]},{"label":"","type":"kvSet","id":243,"inputs":[{"name":"key","value":null,"type":"string"},{"name":"value","value":null,"type":"any"}],"outputs":[{"name":"new","type":"boolean"}],"source":"key_value","position":{"x":747,"y":172}},{"label":"","type":"kvDump","id":244,"inputs":[{"name":"dump","value":null,"type":"any"}],"outputs":[{"name":"object","type":"object"}],"source":"key_value","position":{"x":516,"y":465}},{"label":"","type":"sink","id":245,"inputs":[{"name":"in","value":null,"type":"any"}],"outputs":[],"source":null,"position":{"x":916,"y":67}},{"label":"","type":"keys","id":246,"inputs":[{"name":"in","value":null,"type":"object"}],"outputs":[{"name":"keys","type":"array"}],"source":null,"position":{"x":654,"y":589}},{"label":"","type":"kvGet","id":247,"inputs":[{"name":"key","value":null,"type":"string"}],"outputs":[{"name":"value","type":"any"}],"source":"key_value","position":{"x":1218,"y":330}},{"label":"","type":"delay","id":248,"inputs":[{"name":"in","value":{"data":1},"type":"any"},{"name":"duration","value":{"data":"100ms"},"type":"string"}],"outputs":[{"name":"out","type":"any"}],"source":null,"position":{"x":175,"y":-225}},{"label":"","type":"len","id":249,"inputs":[{"name":"in","value":null,"type":"array"}],"outputs":[{"name":"out","type":"number"}],"source":null,"position":{"x":797,"y":778}},{"label":"","type":">","id":250,"inputs":[{"name":"x","value":null,"type":"number"},{"name":"y","value":{"data":0},"type":"number"}],"outputs":[{"name":"x>y","type":"boolean"}],"source":null,"position":{"x":892,"y":863}},{"label":"","type":"latch","id":251,"inputs":[{"name":"in","value":null,"type":"any"},{"name":"ctrl","value":null,"type":"boolean"}],"outputs":[{"name":"true","type":"any"},{"name":"false","type":"any"}],"source":null,"position":{"x":999,"y":822}},{"label":"","type":"sink","id":252,"inputs":[{"name":"in","value":null,"type":"any"}],"outputs":[],"source":null,"position":{"x":1118,"y":902}},{"label":"","type":"head","id":253,"inputs":[{"name":"in","value":null,"type":"array"}],"outputs":[{"name":"head","type":"any"}],"source":null,"position":{"x":1220,"y":588}},{"label":"","type":"tail","id":254,"inputs":[{"name":"in","value":null,"type":"array"}],"outputs":[{"name":"tail","type":"array"}],"source":null,"position":{"x":1238,"y":660}},{"label":"","type":"latch","id":255,"inputs":[{"name":"in","value":null,"type":"any"},{"name":"ctrl","value":null,"type":"boolean"}],"outputs":[{"name":"true","type":"any"},{"name":"false","type":"any"}],"source":null,"position":{"x":1265,"y":749}},{"label":"","type":"len","id":256,"inputs":[{"name":"in","value":null,"type":"array"}],"outputs":[{"name":"out","type":"number"}],"source":null,"position":{"x":1129,"y":889}},{"label":"","type":">","id":257,"inputs":[{"name":"x","value":null,"type":"number"},{"name":"y","value":{"data":0},"type":"number"}],"outputs":[{"name":"x>y","type":"boolean"}],"source":null,"position":{"x":1346,"y":923}},{"label":"","type":"sink","id":258,"inputs":[{"name":"in","value":null,"type":"any"}],"outputs":[],"source":null,"position":{"x":1483,"y":790}},{"label":"","type":"write","id":259,"inputs":[{"name":"writer","value":null,"type":"writer"},{"name":"msg","value":null,"type":"any"}],"outputs":[{"name":"writer","type":"writer"}],"source":null,"position":{"x":1521,"y":161}},{"label":"","type":"flush","id":260,"inputs":[{"name":"writer","value":null,"type":"writer"}],"outputs":[{"name":"writer","type":"writer"}],"source":null,"position":{"x":1566,"y":327}},{"label":"","type":"isError","id":261,"inputs":[{"name":"in","value":null,"type":"any"}],"outputs":[{"name":"out","type":"boolean"}],"source":null,"position":{"x":1601,"y":702}},{"label":"","type":"latch","id":262,"inputs":[{"name":"in","value":null,"type":"any"},{"name":"ctrl","value":null,"type":"boolean"}],"outputs":[{"name":"true","type":"any"},{"name":"false","type":"any"}],"source":null,"position":{"x":1681,"y":599}},{"label":"","type":"sink","id":263,"inputs":[{"name":"in","value":null,"type":"any"}],"outputs":[],"source":null,"position":{"x":1766,"y":269}},{"label":"","type":"kvDelete","id":264,"inputs":[{"name":"key","value":null,"type":"string"}],"outputs":[{"name":"deleted","type":"boolean"}],"source":"key_value","position":{"x":1795,"y":475}},{"label":"","type":"sink","id":265,"inputs":[{"name":"in","value":null,"type":"any"}],"outputs":[],"source":null,"position":{"x":2025,"y":605}},{"label":"","type":"latch","id":306,"inputs":[{"name":"in","value":null,"type":"any"},{"name":"ctrl","value":null,"type":"boolean"}],"outputs":[{"name":"true","type":"any"},{"name":"false","type":"any"}],"source":null,"position":{"x":358,"y":348}},{"label":"","type":"first","id":307,"inputs":[{"name":"in","value":null,"type":"any"}],"outputs":[{"name":"first","type":"boolean"}],"source":null,"position":{"x":249,"y":417}},{"label":"","type":"identity","id":308,"inputs":[{"name":"in","value":{"data":0},"type":"any"}],"outputs":[{"name":"out","type":"any"}],"source":null,"position":{"x":147,"y":320}},{"label":"","type":"+","id":311,"inputs":[{"name":"x","value":null,"type":"number"},{"name":"y","value":{"data":1},"type":"number"}],"outputs":[{"name":"x+y","type":"number"}],"source":null,"position":{"x":552,"y":355}},{"label":"","type":"identity","id":322,"inputs":[{"name":"in","value":null,"type":"any"}],"outputs":[{"name":"out","type":"any"}],"source":null,"position":{"x":550,"y":523}},{"label":"","type":"toString","id":321,"inputs":[{"name":"in","value":null,"type":"any"}],"outputs":[{"name":"out","type":"string"}],"source":null,"position":{"x":612,"y":-23}},{"label":"","type":"latch","id":341,"inputs":[{"name":"in","value":null,"type":"any"},{"name":"ctrl","value":null,"type":"boolean"}],"outputs":[{"name":"true","type":"any"},{"name":"false","type":"any"}],"source":null,"position":{"x":950,"y":359}},{"label":"","type":"first","id":342,"inputs":[{"name":"in","value":null,"type":"any"}],"outputs":[{"name":"first","type":"boolean"}],"source":null,"position":{"x":841,"y":428}},{"label":"","type":"identity","id":343,"inputs":[{"name":"in","value":{"data":0},"type":"any"}],"outputs":[{"name":"out","type":"any"}],"source":null,"position":{"x":739,"y":331}},{"label":"","type":"+","id":344,"inputs":[{"name":"x","value":null,"type":"number"},{"name":"y","value":{"data":1},"type":"number"}],"outputs":[{"name":"x+y","type":"number"}],"source":null,"position":{"x":1144,"y":366}},{"label":"","type":"identity","id":345,"inputs":[{"name":"in","value":null,"type":"any"}],"outputs":[{"name":"out","type":"any"}],"source":null,"position":{"x":1142,"y":534}},{"label":"","type":"valueSet","id":356,"inputs":[{"name":"value","value":null,"type":"any"}],"outputs":[{"name":"out","type":"any"}],"source":"value","position":{"x":1299,"y":-49}},{"label":"","type":"value","id":357,"position":{"x":1185,"y":73},"params":[]},{"label":"","type":"gate","id":361,"inputs":[{"name":"in","value":null,"type":"any"},{"name":"ctrl","value":null,"type":"any"}],"outputs":[{"name":"out","type":"any"}],"source":null,"position":{"x":1494,"y":-232}},{"label":"","type":"valueGet","id":365,"inputs":[{"name":"trigger","value":null,"type":"any"}],"outputs":[{"name":"value","type":"any"}],"source":"value","position":{"x":1299,"y":182}},{"label":"","type":"toString","id":369,"inputs":[{"name":"in","value":null,"type":"any"}],"outputs":[{"name":"out","type":"string"}],"source":null,"position":{"x":1418,"y":103}}],"sources":[{"label":"","type":"server","id":266,"position":{"x":416,"y":75},"params":[{"name":"port","value":"0"}]},{"label":"","type":"key_value","id":267,"position":{"x":492,"y":350},"params":[]},{"label":"","type":"value","id":357,"position":{"x":1185,"y":73},"params":[]}],"links":[],"connections":[],"groups":[{"id":239,"label":"pubsub","children":[266,242,267,243,244,245,246,247,248,240,241,259,260,261,262,263,264,265,305,321,340,356,357,361,365,369],"position":{"x":584,"y":-418}}]}

@nikhan
Copy link

nikhan commented Nov 15, 2015

ugh, if you turn the delay down to 1ms something gets gummed up :[

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment