Hi Anders, thanks. If I understand what you are asking, in fact the server in my case does not care if anyone is listening, however you can set how long the messages live in the queue. The client holds the responsibility of keeping track of what messages it has already seen based on the date in the response header. If you want to make sure your client doesn't miss messages you set a very long time to live and let the client catch up to what it hasn't seen yet in the spew of messages when it signs back on. For my application this was not necessary, as I treat push messages as ephemeral short lived things. When the client comes back on the direct request to the server to log in gives its next waiting event as a plain old response to the request to the application maintaining this state. Does this answer your question? On Dec 21, 2010 5:50 PM, "Anders Rune Jensen" <anders.rune.jen...@gmail.com> wrote: > On Mon, Dec 20, 2010 at 6:06 PM, rob levy <r.p.l...@gmail.com> wrote: >> I have posted a repository containing the code for a web application I made >> using a server push (AKA Comet, long polling) architecture. The front end >> is in Javascript, and the back end is in Clojure. The clojure code is able >> to send notifications to clients' browsers effectively through use of >> nginx's push module, which the clients subscribe to. With websockets >> presently out of reach this can be a good way of doing this sort of thing, >> and at least on my small-scale testing it is a super responsive way of >> simulating a socket. > > Hi Rob > > Interesting project. I havn't looked at the machine learning part of > it, although that also sounds interesting, but at first I was more > interested in the long polling aspect of your application. I was > looking at something similar but in the end I decided that given my > use case (mostly a single client polling) it didn't make much sense to > use nginx. I'm guessing that in your architecture, nginx makes more > sense because you have a lot of clients polling the same interface? > That way you know that it is much more likely that there will be at > least one subscriber left for a message when the server actually has > something to send. And I guess the way the back-end knows that there > is still someone that wants to know about a message is that nginx says > that there is still clients waiting when it delivers the message. > Could you maybe elaborate a bit more on this? > >> https://github.com/rplevy/sayoperation >> >> The application itself is online (for now) at: >> >> http://www.robertplevy.net/sayoperation/ >> >> A little bit of context is necessary here. This is a game I made as part of >> my final project for a course I am in (I am taking courses part time as part >> of an MA program I will eventually complete) on the topic of Machine >> Learning and Natural Language Processing. The purpose of the game is to >> collect game move data. I'm in the process of figuring out how to train a >> classifier to learn to make the same sorts of game moves (though the text >> generation piece is out of scope), to have 1/2 of an AI game player. >> >> If you want to play the game and help me collect training data, here are >> some things to know: >> >> 1. You will be asked to give an instruction to your team mate, given the >> information on the screen. The red is the target, and the green is what >> your teammate will move to the target. Notice that the target is always an >> empty space. For example "put the crab above the butterfly" would make >> sense if the crab had a green border, and there were a red bordered target >> above the butterfly. >> >> 2. Use clear and natural language when entering data., try to explain in >> the way you would explain to a person. Punctuation and capitalization is >> stripped out/lowercased. >> >> 3. The rounds work like this. Player 1 instruct -> Player 2 move --> >> Player 2 instruct --> Player 1 move. The game automatically presents your >> next available move just like in RIAs such as gchat or facebook (no need to >> refresh). >> >> 4. Multiple concurrent games are encouraged. The game should be >> responsive and will immediately tell you if you have a move to play in any >> of your games. >> >> 5. Caveat: The application has been tested thoroughly in Firefox and >> Chrome. While there is no inherent reason why it shouldn't be possible to >> make it work in Opera or Internet Explorer, I have not tested it in IE (so >> it probably doesn't work in that browser), and I am aware that it doesn't >> work in Opera. This is just a matter of time and effort, that I need to >> spend on the NLP side of this project at the moment. >> >> 6. The high scoring team as of 2am tonight will win something (I haven't >> decide what, give me ideas please). >> >> Thanks, >> Rob >> >> -- >> 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<clojure%2bunsubscr...@googlegroups.com> >> For more options, visit this group at >> http://groups.google.com/group/clojure?hl=en > > > > -- > Anders Rune Jensen > > http://www.iola.dk > > -- > 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<clojure%2bunsubscr...@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 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