On Fri, Mar 2, 2012 at 5:19 PM, Paul Graphov <span dir="ltr">&lt;<a href="mailto:graphov@gmail.com">graphov@gmail.com</a>&gt;</span> wrote:<br><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Hello Cafe!<br>
<br>
I am trying to implement networked application in Haskell. It should accept many<br>
client connections and support bidirectional conversation, that is not<br>
just loop with<br>
Request -&gt; Response function but also sending notifications to clients etc.<br></blockquote><div><br>Hi, <br><br>The tutorial I gave for CUFP 2011 was a multi-user web chat program using the Snap Framework. STM channels make this kind of problem super-easy to deal with. Don&#39;t be afraid of forking lots of Haskell threads for programs like this, because they&#39;re &quot;green&quot; threads, not OS threads (i.e. Haskell threads are M:N multiplexed onto OS threads) and as such they have very little overhead.<br>
</div></div><br>Maybe you&#39;ll find the code interesting: <a href="https://github.com/snapframework/cufp2011">https://github.com/snapframework/cufp2011</a>. The &quot;business logic&quot; of using STM channels is here: <a href="https://github.com/snapframework/cufp2011/blob/master/src/Snap/Chat/ChatRoom.hs">https://github.com/snapframework/cufp2011/blob/master/src/Snap/Chat/ChatRoom.hs</a><br clear="all">
<br>G<br>-- <br>Gregory Collins &lt;<a href="mailto:greg@gregorycollins.net" target="_blank">greg@gregorycollins.net</a>&gt;<br>