<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=utf-8"><meta name=Generator content="Microsoft Word 15 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:#954F72;
        text-decoration:underline;}
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
        {mso-style-priority:34;
        margin-top:0in;
        margin-right:0in;
        margin-bottom:0in;
        margin-left:.5in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
.MsoChpDefault
        {mso-style-type:export-only;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
/* List Definitions */
@list l0
        {mso-list-id:472253142;
        mso-list-type:hybrid;
        mso-list-template-ids:286569224 -1 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
@list l0:level1
        {mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l0:level2
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l0:level3
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:right;
        text-indent:-9.0pt;}
@list l0:level4
        {mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l0:level5
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l0:level6
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:right;
        text-indent:-9.0pt;}
@list l0:level7
        {mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l0:level8
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l0:level9
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:right;
        text-indent:-9.0pt;}
@list l1
        {mso-list-id:1058481762;
        mso-list-type:hybrid;
        mso-list-template-ids:1912273098 -1 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
@list l1:level1
        {mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l1:level2
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l1:level3
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:right;
        text-indent:-9.0pt;}
@list l1:level4
        {mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l1:level5
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l1:level6
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:right;
        text-indent:-9.0pt;}
@list l1:level7
        {mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l1:level8
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l1:level9
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:right;
        text-indent:-9.0pt;}
ol
        {margin-bottom:0in;}
ul
        {margin-bottom:0in;}
--></style></head><body lang=EN-US link=blue vlink="#954F72"><div class=WordSection1><p class=MsoNormal>With pub/sub, publishers send messages to topics, and subscribers receive (or poll) messages from topics (many-to-many). You can have one-to-one messaging with a similar or same product. Oracle AQ, Java JMS work with database tables or similar to implement message queues.  So central service yes, but see below, email.  There used to be a pub/sub server run by google, but no longer.  One publishes to a topic and the recipient filters messages.  It may be worth reading some message queuing literature for terminology. I am most familiar with Oracle AQ and Java JMS.</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>You can send text or objects over these.  I don’t recommend video, but let me look for a video messaging queuing system.  We can pass URLs or we can use WebRTC for live videos.</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Email is a distributed message queuing system.   Topics involve mailing lists and threads.  People publish email to topics People subscribe to email with their email address. Email is distributed pub/sub.</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>So the idea I want to get across is pub/sub, not central versus distributed. A lot of software used the idea of federation.  I think we want the idea of a federated messaging system—but that may be too complex for a small team, so we’d have to select a product or get someone to build us one (XMPP has federation, conferences/topics already).   So we design the content, and choose something (an existing standard) to do transport and signaling.</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>What content are we designing in to our messages?   What do we require of the underlying system beside transport? Multimedia? In-order messages?  Signaling?</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>By Broker do you mean Message Transfer Agent/MX Host?  <a href="https://en.wikipedia.org/wiki/Message_transfer_agent">https://en.wikipedia.org/wiki/Message_transfer_agent</a>.   There used to be something called “Store and forward” in the days of UUCP (dialup).  Sendmail would queue up the mail, and when a UUCP connection happened, it would send the mail over the phone lines, the mail would hop from host to host along a path specified in the address.  Also USENET (topic software) <a href="https://en.wikipedia.org/wiki/Usenet">https://en.wikipedia.org/wiki/Usenet</a> went over UUCP.   Practically before my time.  These were intended to use MIME for multimedia.  I remember when sending images over UseNet was a big thing.</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>I would rather discuss the HLAP (High Level Application Protocol), and let the HLAP choose a software infrastructure based on requirements of the HLAP (That is, set requirements for the lower level protocols).   Once we have a shopping list of requirements, we go shopping for something compatible with Web3D’s Intellectual Property rules.</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Requirements of a transport for HLAP:</p><ol style='margin-top:0in' start=1 type=1><li class=MsoListParagraph style='margin-left:0in;mso-list:l1 level1 lfo1'>Many to Many topics and messaging capable of carrying or referring to X3D multimedia, Avatars, Inventory and Communication.  At up to ?? messages per second</li><li class=MsoListParagraph style='margin-left:0in;mso-list:l1 level1 lfo1'>Federated messaging (possibly spatiotemporal)</li><li class=MsoListParagraph style='margin-left:0in;mso-list:l1 level1 lfo1'>Conferences/Rooms/Channels/Topics for private X3D worlds</li><li class=MsoListParagraph style='margin-left:0in;mso-list:l1 level1 lfo1'>Block a publisher</li><li class=MsoListParagraph style='margin-left:0in;mso-list:l1 level1 lfo1'>Report a publisher</li><li class=MsoListParagraph style='margin-left:0in;mso-list:l1 level1 lfo1'>Message log/replay.</li><li class=MsoListParagraph style='margin-left:0in;mso-list:l1 level1 lfo1'>Edit own messages.</li><li class=MsoListParagraph style='margin-left:0in;mso-list:l1 level1 lfo1'>Conference/Topic/Room/Channel search?</li><li class=MsoListParagraph style='margin-left:0in;mso-list:l1 level1 lfo1'>Usable from HTML5 web.</li></ol><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Please provide input for this list.</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Valentin, you may post this to the SP-ARK site.</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Note that I have difficulty talking about state because of multiple meanings, political, physics etc.   Do you really just mean state, state of what?  What does the state transition network look like?</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>John</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Sent from <a href="https://go.microsoft.com/fwlink/?LinkId=550986">Mail</a> for Windows 10</p><p class=MsoNormal><o:p> </o:p></p><div style='mso-element:para-border-div;border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in'><p class=MsoNormal style='border:none;padding:0in'><b>From: </b><a href="mailto:christoph.valentin@gmx.at">Christoph Valentin</a><br><b>Sent: </b>Sunday, March 31, 2019 6:19 PM<br><b>To: </b><a href="mailto:yottzumm@gmail.com">John Carlson</a>; <a href="mailto:brutzman@nps.edu">Don Brutzman</a><br><b>Cc: </b><a href="mailto:x3d-public@web3d.org">X3D Graphics public mailing list</a><br><b>Subject: </b>Re: [x3d-public] pub/sub for multiuser. SP-ARK input. pub/sub inevent loop for X3Dv4</p></div><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>John,<br><br>When you say "pub/sub vs. messaging" do I get you right you mean "using a central server yes vs. no" ?<br><br>Messages are addressed to concrete destinations vs. publishing a state always to a server?<br><br>This the topic you want to discuss?<br><br>Thanks<br>-- <br>Diese Nachricht wurde von meinem Android Mobiltelefon mit GMX Mail gesendet.<o:p></o:p></p><div><p class=MsoNormal>Am 01.04.19, 00:51, Christoph Valentin <christoph.valentin@gmx.at> schrieb:<o:p></o:p></p><blockquote style='border:none;border-left:solid #CCCCCC 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-top:4.8pt;margin-right:0in;margin-bottom:5.0pt'><div><p class=MsoNormal style='margin-left:.2in'>Hi John,<br><br>About pub/sub. I am not aware of this abbreviation, but let me guess you mean "publish" / "subscribe" and let me assume we are talking about network functions well known as so called brokers. <br><br><br><br>The Network Sensor node is exactly such an interface that is used to communicate with a broker (aka collaboration server).<br><br><br><br>When the NS is initialized, then it sends an STS "Subscribe to Stream" to the broker and tells him about the interest <br><br><br>When a new state is published, then this is done with a SUN "State Update Notification".<br><br>Publishing is done by SURE "State Update Request" and SCR "State Change Request<br><br>All the best <br>-- <br>Diese Nachricht wurde von meinem Android Mobiltelefon mit GMX Mail gesendet.<o:p></o:p></p></div><div><p class=MsoNormal style='margin-left:.2in'>Am 01.04.19, 00:35, John Carlson <yottzumm@gmail.com> schrieb:<o:p></o:p></p><blockquote style='border:none;border-left:solid #CCCCCC 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-top:4.8pt;margin-right:0in;margin-bottom:5.0pt'><p> </p><p class=MsoNormal style='margin-left:.4in'>What do you think about using pub/sub or messaging?  What “style” of protocol works best in SP-ARK’s case?  I think one to many and many to one is one of the best features of pub/sub, but often it takes a lot infrastructure to maintain the queues.<o:p></o:p></p><p> </p><p class=MsoNormal style='margin-left:.4in'>Maybe we should step back and define the objects we are communicating.<o:p></o:p></p><p> </p><ol style='margin-top:0in' start=1 type=1><li class=MsoListParagraph style='margin-left:0in;mso-list:l0 level1 lfo2'>Avatar (initial H-Anim figure) and position, orientation, motion (ongoing).   This is done by pc.multiplayer tag around the world<o:p></o:p></li><li class=MsoListParagraph style='margin-left:0in;mso-list:l0 level1 lfo2'>Things the avatar might be carrying (shapes transformed by the avatars position, orientation and motion)<o:p></o:p></li><li class=MsoListParagraph style='margin-left:0in;mso-list:l0 level1 lfo2'>Sounds-chat-video applied to avatar position<o:p></o:p></li><li class=MsoListParagraph style='margin-left:0in;mso-list:l0 level1 lfo2'>???<o:p></o:p></li></ol><p> </p><p> </p><p> </p><p class=MsoNormal style='margin-left:.4in'>Thus some actions might be:<o:p></o:p></p><p> </p><p class=MsoNormal style='margin-left:.4in'>Subscribe to Avatar Topic, Reply Address<o:p></o:p></p><p class=MsoNormal style='margin-left:.4in'>Subscribe to Inventory Topic, Reply Address<o:p></o:p></p><p class=MsoNormal style='margin-left:.4in'>Subscribe to Communication Topic, Reply Address<o:p></o:p></p><p class=MsoNormal style='margin-left:.4in'>Avatar Publish<o:p></o:p></p><p class=MsoNormal style='margin-left:.4in'>Inventory Publish<o:p></o:p></p><p class=MsoNormal style='margin-left:.4in'>Communication Publish<o:p></o:p></p><p class=MsoNormal style='margin-left:.4in'>Receive Avatar Publish<o:p></o:p></p><p class=MsoNormal style='margin-left:.4in'>Receive Inventory Publish<o:p></o:p></p><p class=MsoNormal style='margin-left:.4in'>Receive Communication Publish<o:p></o:p></p><p> </p><p class=MsoNormal style='margin-left:.4in'>This feels a lot more natural to me than the SQL, Chat or REST protocols.<o:p></o:p></p><p> </p><p class=MsoNormal style='margin-left:.4in'>We can create different topics to communicate about, probably subclasses of NetworkSensor or some such.<o:p></o:p></p><p> </p><p class=MsoNormal style='margin-left:.4in'>Check out the High Fidelity intro video for ideas about what might be done, re: Inventory.   This will be important when we get to VR controllers.<o:p></o:p></p><p> </p><p class=MsoNormal style='margin-left:.4in'>Collaboration as far as the scene itself is a lot like SAI, but perhaps we need to consider network traffic for that?<o:p></o:p></p><p> </p><p class=MsoNormal style='margin-left:.4in'>Don, what do you think about putting a network pub/sub interface into the event loop for X3Dv4?  Is there a popular JavaScript pub/sub?<o:p></o:p></p><p> </p><p class=MsoNormal style='margin-left:.4in'>John<o:p></o:p></p></blockquote></div></blockquote></div><p class=MsoNormal style='margin-left:4.8pt'>_______________________________________________ x3d-public mailing list x3d-public@web3d.org http://web3d.org/mailman/listinfo/x3d-public_web3d.org <o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p></div></body></html>