From mboxrd@z Thu Jan 1 00:00:00 1970 To: Fans of the OS Plan 9 from Bell Labs <9fans@9fans.net> In-reply-to: Your message of "Wed, 15 Oct 2014 15:56:14 -0000." <86iojlmin5.fsf@cmarib.ramside> References: <86iojlmin5.fsf@cmarib.ramside> Date: Wed, 15 Oct 2014 10:01:24 -0700 From: Bakul Shah Message-Id: <20141015170124.74DE5B827@mail.bitblocks.com> Subject: Re: [9fans] server push in 9P protocol Topicbox-Message-UUID: 1d39d0ce-ead9-11e9-9d60-3106f5b1d025 On Wed, 15 Oct 2014 15:56:14 -0000 smiley@icebubble.org wrote: > Hello, > > I'm wondering if there is any way to do server push using the 9P > protocol. I'm trying to imagine use of 9P for applications such as data > acquisition. One example might be caputing MIDI messages from digital > musical instruments. > > As I understand the protocol, if an instrument served MIDI over 9P, > every MIDI message would have to be explicitly requested with a Tread. > And the instrument would have to wait for a Tread in order to send data. > If the instrument (server) sent more than one Rread with the same tag, > that would be a violation of the protocol. > > It might be possible to reverse roles: for the instrument to act as a 9P > client and treat the MIDI host as a 9P server. In that case, each MIDI > message could take the form of a Twrite to the MIDI host. But that > would generate a series of Rwrites back from the host to the instrument, > which would be unnecessary and have to be ignored. > > Another example might be isochronous data streams, such as video > captured at a fixed framerate from a video capture device. Having to > send the same Tread or Rread 30x/second seems silly. > > So, is there any way use 9P in a server-push mode, where the server > spits out a stream of data to be captured? A server can return responses in any order since each request has a client defined unique tag associated with it. Don't see why the same connection can't be used both sides to act as a server for the other.... Though this assumption may be implicit in code. John Floren extended 9p for streaming. There was at least one email thread about it on 9fans. But why not set up a separate tcp stream? Why do you have to use 9p?