chobo
chobo

Reputation: 32291

Is polling the way to go for live chat on web?

I'm trying to implement a custom live chat program on the web, but I'm not sure how to handle the real-time (or near real-time) updates for users. Would it make more sense to send Ajax requests from the client side every second or so, polling the database for new comments?

Is there a way to somehow broadcast from the database each time a comment is added? If this is possible how would that work? I'm using Sql Server 2008 with Asp.net (c#).

Thanks!

Upvotes: 1

Views: 746

Answers (3)

Kevin
Kevin

Reputation: 25269

Use long polling/server side push/comet:

http://en.wikipedia.org/wiki/Comet_(programming))

Also see: http://en.wikipedia.org/wiki/Push_technology

I think when you use long polling you'll also want your web server to provide some support in the form of non-blocking io for requests, so that you aren't holding a thread per connection.

Upvotes: 2

user180326
user180326

Reputation:

You could have each client poll the server, and at the server side keep the connection open without responding.

As soon there is a message detected at server side, this data is returned through the already open connection. On receipt, your client immediately issues a new request.

There's some complexity as you need to keep track server side which connections is associated with which session, and which should be responded upon to prevent timeouts.

I never actually did this but this should be the most resource efficient way.

Upvotes: 2

Ravi Bhatt
Ravi Bhatt

Reputation: 3163

Nope. use queuing systems like RabiitMq or ActiveMQ. Check mongoDB too.

A queuing system will give u a publish - subscribe facilities.

Upvotes: 0

Related Questions