0

We want to have web based application to track the issues, knowledge management and chat system. Once the user logged in, user can chat with the service engineers.

We will be using Ajax for Chat within the browser. But the server-side we are not sure how to implement chat? The chat history must be saved for lateral viewing. When someone start chatting, the system must find the available service engineer and he will begin interfacing with customer.

any better approach to handle the chat system with in the web? We are OK to use Python, PHP, Ruby/Rails, Grails or .NET

We can use available systems, we need better interface/api to the available system so that it can be integrated within our application.

  • 5
    Do you *have* to reinvent this, or can you use one of the zillion existing products for live chat support? – Jørn Schou-Rode Feb 01 '10 at 08:49
  • 2
    Have you considered using Erlang? It would probably require very little work to get going. – Tor Valamo Feb 01 '10 at 08:52
  • we can use available systems, we need better interface/api to the available system so that it can be integrated within our application –  Feb 01 '10 at 08:52
  • @Tor Valamo, If we have readymade solution using erlang, we can go for that? Do you know some system? We don't have expertise in erlang. –  Feb 01 '10 at 08:54
  • Added my comments as an answer, since it sort of went in that direction.. – Tor Valamo Feb 01 '10 at 08:58
  • @Tor Valamo what about Go? Would that be a viable option now? – orokusaki Apr 07 '10 at 05:29
  • Probably, but I haven't tried it. I imagine the development time would be longer than Erlang though. And it would probably be overkill just for a chat system. – Tor Valamo Apr 07 '10 at 10:37

3 Answers3

4

Oh. If I have to implement something like this, I would take a XMPP (Jabber) server. Why to reinvent?

There are two servers that are pretty stable and feature rich: ejabberd (implemented in Erlang) and OpenFire (implemented in Java). Personally I prefer OpenFire since it easier to configure and Java developers are easier to find in case you want to extend its functionality... But it is a matter of taste.

For the web client there is a technology called BOSH. It allows you not to poll your server with requests every X seconds, but receive messages as soon as they are available. BOSH is a part of XMPP standard. There is a JavaScript library called Strophe JS that allows you to utilize BOSH on your web-page easily. There is an example implementation.

Furthermore, your stuff could be more happy with desktop IM clients rather than web-based. If you use XMPP you automatically get an ability to connect to the service using any existing IM client with Jabber support.

To get mentioned functionality to select available service engineer you could implement little server plugin and not the server as a whole. History is configurable in both servers.

So finally, my opinion: take already written and proven XMPP server, its BOSH using Strophe JS and a little plugin to select free service engineer.

nkrkv
  • 7,030
  • 4
  • 28
  • 36
2

We run an XMPP (jabber) server called OpenFire, which has a web-chat extension called FastPath. The one downside is that it forces us all to use the same client (Spark) or risk chat requests that reach non-Spark clients to vanish. But it is very customizable and you can capture just about any activity and stats.

Anthony
  • 36,459
  • 25
  • 97
  • 163
1

Have you considered using Erlang? It would probably require very little work to get going.

I don't know of any complete systems for what you want, but Erlang is very easy to learn and there is an example of a chat server which you can probably modify to fit your needs.

Obviously clear it with the author first.

Tor Valamo
  • 33,261
  • 11
  • 73
  • 81