Beefy Boxes and Bandwidth Generously Provided by pair Networks
Problems? Is your data what you think it is?

Re: Client-Server system

by andreychek (Parson)
on Jun 22, 2001 at 05:02 UTC ( #90601=note: print w/replies, xml ) Need Help??

in reply to Client-Server system

That's a very interesting problem you are looking to solve. There is an open source instant messaging platform called Jabber. It works similar to AIM or ICQ, but is free, and you don't need to use any one company's server, you can set one up on your own.

What is intriguing about this is that the same way you and I can talk to each other via instant messages, so could any two given applications. A way some are looking to use Jabber is very similar to what you are looking for -- to allow multi-tier applications to talk to one another.

You would simply have your client and server log in to the Jabber server using a particular ID. Once they know each other's Jabber ID (JID), they can speak to one another.

There are several advantages to this approach. First, you don't have to worry about any of the message passing details. Client libraries have been developed already for many popular languages, including Perl, Python, PHP, C, etc (the Perl library is known as Net::Jabber). You simply make use of various API calls to send and receive messages. Also, since there are so many supported languages, it doesn't matter what language you write your programs in. Of course, we all prefer Perl here.. but in some cases, life isn't that easy, and for one reason or another we need to use another language. With Jabber, no problem. It also has an open API, uses XML for message passing, and has a company backing it, showing that it won't be going out of style any time soon.

For communicating between your applications, you could use SOAP::Lite or something similar, and embed those within the Jabber XML messages.

There are two versions of Jabber -- an open source an commercial version. The commercial version has a few extra features, and is more scalable. You could choose between the two, depending on your needs.

One big problem you may run into then, is that you said you are running on Windows 2000/Mac. Jabber only runs on UNIX/Linux. Now, with Jabber, you could set up a Linux box in the corner to run the Jabber server on, and keep everything else on your Windows and Mac boxen. But if you are unable to do that, you'd have to wait until the Windows port is finished, which is supposedly under way.

At one point in time, there had been a project under way known as JAM -- Jabber as Middleware. It was designed to take Jabber to the next level as far as Middleware goes. Unfortunatly, the people working on it just haven't had time to put into it, and it appears to be on hold at the moment. If you're interested in pushing, check out the Jam Dev Mailing List. Do be sure to look through the archives first to get a better idea what it is (and dizzyd is the ring leader), but you can also send a message to see if anyone is still alive :-)

Good luck!

Replies are listed 'Best First'.
Re: Re: Client-Server system
by Beatnik (Parson) on Jun 22, 2001 at 13:53 UTC
    Actually the Jabber server is apparently only available in Linux version. Clients exist for all kinds of platforms (didn't see a Palm version yet tho).

    ... Quidquid perl dictum sit, altum viditur.
      > Actually the Jabber server is apparently only
      > available in Linux version. Clients exist for
      > all kinds of platforms(didn't see a Palm version yet
      > tho).

      Right, but I did mention that in my previous post ;-)

      Again though, the ideal method of handling this case would be to toss a Linux box in the corner running the Jabber server -- perhaps on Gigabyte Ethernet -- and just let the Windows and Mac Boxen access the Jabber server via the network.

      One thing I forgot to mention in my original post though is that both versions of Jabber were designed to be scalable, and if you find that running a Jabber server on one box isn't fast enough, you can do some form of load balancing to help offset some of the traffic.

      We're actually beginning to tinker with using Jabber for this purpose here at my workplace, I'll be sure to post the results of how it all goes.
        Jabber sounds like a wonderful solution to this problem. I will talk to my boss about the possibility of getting myself a little linux server... He will like the APIs for all the different languages

        My boss is pushing me to write this in C++ rather than Perl, but I have been avoiding it saying that I have better resources for Perl. Thanks to you guys, I am right!

        But this does look promising...

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://90601]
[Discipulus]: why perl -e 'print q(\'a string\'),"\n"' gives -bash: syntax error near unexpected token `)' ??
[Discipulus]: i'm not escaping correctly?
[moritz]: Discipulus] iirc bash doesn't let you escape ' with \
[moritz]: not inside a single-qouted string at least
[moritz]: echo 'a'\''

How do I use this? | Other CB clients
Other Users?
Others surveying the Monastery: (9)
As of 2017-11-24 10:13 GMT
Find Nodes?
    Voting Booth?
    In order to be able to say "I know Perl", you must have:

    Results (346 votes). Check out past polls.