Originally, I had this mental analogy of:

function call :: remote procedure call = local async :: async over websocket

  In the func vs rpc case, the distinction is important to know what
is fast / what requires a network connection.

  However, upon further reflection, this analogy / distinction doesn't
hold in the local async / async over websocket because ... async
doesn't "require immedaite return" -- the mental model is: I fire off
this message to a mailbox, and forget about it -- so whether the
destination is in the same apartment complex or another state doesn't
really matter.




On Fri, Jan 31, 2014 at 7:59 AM, Timothy Baldridge <tbaldri...@gmail.com> wrote:
> A quick thought...there really isn't much of a difference between a failing
> network connection and a (chan (dropping-buffer 1024))
>
> Both may (or may not) drop information that you put into them, but also,
> both can be expected to work "normally" as long as certain conditions hold.
> Namely, the net connection doesn't die, or the consumer can keep up with the
> data being put into the dropping buffer.
>
> So that's my advice, if you can't guarantee the data will reach the remote
> end, or you can't perfectly match core.async back pressure semantics, simply
> use a dropping buffer at the edges and code to those semantics.
>
> Timothy
>
> Timothy
>
>
> On Fri, Jan 31, 2014 at 3:37 AM, Thomas Heller <th.hel...@gmail.com> wrote:
>>
>> Hi,
>>
>> only advice I can give is: no or don't.
>>
>> In the many years I have done web development one of the most important
>> things I have learned is to keep the server as stateless as possible. Data
>> is easily kept externally while channels are not. Channels also aren't
>> exactly simple state since they are usually also attached to some go-blocks
>> and the like. While its very common the handle disconnects of the client on
>> the server und not as common to handle disconnects of the server on the
>> client.
>>
>> Disconnects are very frequent so you need to respect them, machines go to
>> sleep, wireless goes away, servers get restarted, jvms crash, etc.
>>
>> Never assume that a "remote" channel actually exist when writing to it,
>> unless you have some really solid error recovery (which probably is more
>> work than using traditional approaches).
>>
>> Just my 2 cents.
>>
>> /thomas
>>
>>
>> On Friday, January 31, 2014 6:43:14 AM UTC+1, t x wrote:
>>>
>>> Hi,
>>>
>>> With apologies for a soft question:
>>>
>>> This question is NOT:
>>>
>>>   I'm in a situation where client = cljs, server = clj, and I want to
>>> figure out how to setup a core.async channel, using pr-str and
>>> edn/read-string, where I can seamlessly push data back and forth
>>> between client and server.
>>>
>>> This question is:
>>>
>>>   Should I do the above?
>>>
>>>   The pro being: yay, channels everywhere, everything looks the same.
>>>
>>>   The con being: a local core.async channel and a remote core.async
>>> channel over a websocket are _NOT_ the same thing, and thus should not
>>> appear to be the same thing.
>>>
>>> ## Responses:
>>>
>>> Although detailed responses are always appreciated, given the nature
>>> of this "soft" question, responses of "go read _link_" are perfectly
>>> welcome too.
>>>
>>> I suspect someone in this world has thought deeply about the question,
>>> written up their insights, and pointing me at this primary resource
>>> (rather than trying to summarize it in a three paragraph email) is
>>> perfectly fine too.
>>>
>>> Thanks!
>>
>> --
>> You received this message because you are subscribed to the Google
>> Groups "Clojure" group.
>> To post to this group, send email to clojure@googlegroups.com
>> Note that posts from new members are moderated - please be patient with
>> your first post.
>> To unsubscribe from this group, send email to
>> clojure+unsubscr...@googlegroups.com
>> For more options, visit this group at
>> http://groups.google.com/group/clojure?hl=en
>> ---
>> You received this message because you are subscribed to the Google Groups
>> "Clojure" group.
>> To unsubscribe from this group and stop receiving emails from it, send an
>> email to clojure+unsubscr...@googlegroups.com.
>> For more options, visit https://groups.google.com/groups/opt_out.
>
>
>
>
> --
> "One of the main causes of the fall of the Roman Empire was that-lacking
> zero-they had no way to indicate successful termination of their C
> programs."
> (Robert Firth)
>
> --
> You received this message because you are subscribed to the Google
> Groups "Clojure" group.
> To post to this group, send email to clojure@googlegroups.com
> Note that posts from new members are moderated - please be patient with your
> first post.
> To unsubscribe from this group, send email to
> clojure+unsubscr...@googlegroups.com
> For more options, visit this group at
> http://groups.google.com/group/clojure?hl=en
> ---
> You received this message because you are subscribed to the Google Groups
> "Clojure" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to clojure+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/groups/opt_out.

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to