Instant Message, Chat Room - for LAMP

I'm looking into adding a chat feature on my site (it's somewhat like a social network). The 2 things I'd like to support are:

  • "instant message" - similar to what FB and GMail provides, wherein 2 individuals can chat in real time
  • "chat room" - where a group of people can chat together (with the option to allow individuals in the chat room to private message each other -- and to be able to turn this feature on or off). Web cam support needed, too.

If I were to try to implement something like this on my own, I think I'd have several options on how to implement this:

  • Ajax long polling (probably the easiest)
  • Comet/Reverse ajax (means I need a push server like Ape, which is more complex I think)
  • Web sockets (but then I'm limited to HTML5)
  • NodeJS (don't really know enough about this)
  • ???

Then again, in the interest of saving money and getting this feature implemented ASAP, perhaps I'm better off trying to use a commercial package, such as Problems I see with Arrow Chat are:

  • It's not JSLinted (and they have no plans to do so)
  • The ability to turn "PM" feature on/off is not supported

Everything else about Arrow Chat seems fine, though.

There is also

Any suggestions on what direction I should take? Were the technologies I listed correct should I try to implement this on my own? Are there any other commercial chat software I should consider?


You don't need to implement all the transport layers on your own. You can either try Socket.IO, which abstracts that away or you can use a service such as Pusher.

Need Your Help

How do I automate data sanitization of linked models in CakePHP

php cakephp sanitization

In order to have best up to date protection for users against XSS attacks the data should rather be sanitized when displayed to users rather than at the moment of db insert, if I got this at all co...

SQL 2005 CTE vs TEMP table Performance when used in joins of other tables

sql sql-server sql-server-2005 tsql common-table-expression

I have a complex query that I need to use in a subsequent query (actually update statement). I have tried both using a CTE and a temp table. The performance using the CTE is horrible vs the temp ...