

Ask HN: Help me learn websockets. - anujkk

I want to learn more about websockets and similar push technologies like polling, long polling etc.<p>Can you recommend any good resource/book for learning websockets using PHP/Python/JavaScript?<p>Also, what can be applications other than chat where one can use websockets?
======
pjscott
Any time you want to be able to send messages between the browser and a
server, websockets are an easy and efficient way to do it. Of course, not all
browsers support them, so it's good if you can fall back to long polling. If
you just want to get started hacking, socket.io is a surprisingly slick
abstraction layer:

<http://socket.io/>

~~~
anujkk
Socket.io is nice but it requires nodejs at server side that I'm unable to use
right now for some reasons. Is there any python/php alternative available?

~~~
pjscott
The best Python alternative looks like TornadIO:

<https://github.com/MrJoes/tornadio>

Does the same stuff as Socket.IO, but in Python. Probably not as widely used
as Socket.IO, but it looks really nice.

------
gadders
> Also, what can be applications other than chat where one can use websockets?

At a bank I used to work for they used this technique for a HTML-only trading
application. The prices on the screen ticked up and down in real time without
a screen refresh being required.

------
lastkarrde
Tornado has Websocket handling built in. It's very easy to use.

Example code:
[https://github.com/facebook/tornado/tree/master/demos/websoc...](https://github.com/facebook/tornado/tree/master/demos/websocket)

------
vonstark
web socket isn't that hard. I use it in my project. be sure what
client(browsers) you are going to support, it won't work for Ie7&6 (or older
chrome & ff)

1) socket.io 2) faye.jcoglan.com 3) eventmachine 4) xmpp

to use 1&2 is faster & easier, however, for example faye doesn't support event
handler currently(but soon in v0.7 )

And faye also kind of hard to extend.

In my opinion, use redis(support pub/sub) & eventmachine (or something like
it). to build ur backend.

use websocket-js for client.

:)

