Ngo,

I checked out your github , it is great. I have not used netty, it looks
clean. However, what is the meaning of this, (def reshedule nil)?


Regards,
Emeka


On Thu, Oct 15, 2009 at 3:02 AM, ngocdaothanh <ngocdaoth...@gmail.com>wrote:

>
> I created this (Netty is used instead of server-socket):
> http://github.com/ngocdaothanh/telchat-clojure
>
> I am going to create a Scala version of the same program to have a
> feeling of Clojure vs Scala, it will be telchat-scala.
>
>
> On Oct 14, 10:12 pm, Emeka <emekami...@gmail.com> wrote:
> > Ngo,
> >
> > Honestly  speaking I don't know. How far have you gone?
> >
> > Regards,
> > Emeka
> >
> > On Sat, Oct 3, 2009 at 3:21 PM, ngocdaothanh <ngocdaoth...@gmail.com>
> wrote:
> >
> > > Emeka, good catch. It's just my mistake.
> >
> > > Another thing is I think there may be exception raised when on-msg
> > > sends message to a closed socket. How would you solve this?
> >
> > > On Oct 3, 7:35 pm, Emeka <emekami...@gmail.com> wrote:
> > > > ngo,
> > > > I was about doing this kind of client/server thing some  days ago,
> > > however
> > > > now you are into it I would like to learn then. I am not quite clear
> why
> > > you
> > > > have this:
> > > > (.start (new Thread (fn [] (create-server 8080 chat-loop))))
> >
> > > > My concern is on  Thread, create-server function has a Thread inside
> > > > create-server-aux function.
> >
> > > > Regards,
> > > > Emeka
> >
> > > > On Fri, Oct 2, 2009 at 3:13 AM, ngocdaothanh <ngocdaoth...@gmail.com
> >
> > > wrote:
> >
> > > > > > I'm not sure TCP/IP has a native facility for that.
> >
> > > > > I'm afraid John's statement is correct:
> >
> > > > >
> http://www.velocityreviews.com/forums/t125620-client-socket-disconnec.
> > > ..
> > > > > and trying to read and write until something wrong happens as
> > > > > demonstrated in Roger's code is the only way to check for
> > > > > disconnection.
> >
> > > > > Below is my new code. Sorry it is rather long.
> >
> > > > > (import '[java.io BufferedReader InputStreamReader
> > > > > OutputStreamWriter])
> > > > > (use 'clojure.contrib.server-socket)
> >
> > > > > (def clients (ref []))  ; Each client is an *out*
> >
> > > > > (defn on-msg [from msg]
> > > > >  (println msg)
> > > > >  (doall
> > > > >    (map
> > > > >      (fn [client]
> > > > >        (if-not (= from client)
> > > > >          (binding [*out* client]
> > > > >            (println msg)
> > > > >            (flush))))
> > > > >      @clients)))
> >
> > > > > (defn on-disconnect [client]
> > > > >  (dosync
> > > > >    (alter clients
> > > > >      (fn [clients]
> > > > >        (remove (fn [c] (= c client)) clients))))
> > > > >  (on-msg client "A client has disconnected"))
> >
> > > > > (defn on-connect [client]
> > > > >  (dosync (alter clients conj client))
> > > > >  (on-msg client "A client has connected"))
> >
> > > > > (defn chat-loop [is os]
> > > > >  (let [client (OutputStreamWriter. os)]
> > > > >    (on-connect client)
> > > > >    (binding [*in* (BufferedReader. (InputStreamReader. is))]
> > > > >      (loop []
> > > > >        (let [msg (read-line)]  ; msg is nil when the client
> > > > > disconnects
> > > > >          (if (nil? msg)
> > > > >            (on-disconnect client)
> > > > >            (do
> > > > >              (on-msg client msg)
> > > > >              (recur))))))))
> >
> > > > > (.start (new Thread (fn [] (create-server 8080 chat-loop))))
> >
> > > > > On Oct 2, 5:20 am, John Harrop <jharrop...@gmail.com> wrote:
> > > > > > On Thu, Oct 1, 2009 at 4:02 PM, Roger Gilliar <ro...@gilliar.de>
> > > wrote:
> > > > > > > Am 01.10.2009 um 21:28 schrieb ngocdaothanh:
> > > > > > > > Roger, your code is not event based.
> > > > > > > What do you mean by not event based ?
> >
> > > > > > He means he wants automatic notification if a connection is
> dropped.
> >
> > > > > > I'm not sure TCP/IP has a native facility for that.
> >
> > > > > > What most chat type programs, multiplayer games, and suchlike do
> is
> > > send
> > > > > a
> > > > > > periodic ping from server to each connected client, which as part
> of
> > > the
> > > > > > chat protocol the client is supposed to acknowledge. If a client
> > > stops
> > > > > > responding for more than a few ping-intervals, it's assumed to
> have
> > > > > > disconnected or otherwise become unreachable.
> >
> > > > > > This method has the advantage of being entirely under the control
> of
> > > the
> > > > > > application layer, and the further advantage of also working with
> UDP
> > > > > (which
> > > > > > is crucial in the "multiplayer games" case at least).
> >
>

--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---

Reply via email to