Using Google Wave reference implementation with ejabberd

Posted by Mickaël Rémond on July 24, 2009

Following up our work with Google in Mountain View this week (Federation day), here is the in a few step how to configure Google Wave reference implementation.

Using Java 6

Make sure you have Java 1.6.0 installed on your system to run Google reference implementation.

For example, on Mac OS X you can change Java preferences or type the following commands:

$ export JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Home
$ export PATH=$JAVA_HOME/bin:$PATH

Getting the code

To retrieve the code, you need to have Mercurial installed on your system. Type hg --version to check that this is the case. If you need to install it, you can download a binary version for Windows or Mac OS X from this page.

Then, check out the code with Mercurial.

hg clone https://wave-protocol.googlecode.com/hg/ wave-protocol

To compile the code, type:

ant

The dist directory should now contain the resulting version of the Google Wave server: fedone-0.2.jar

Creating the certificates for Google Wave server

The process to create those self-signed certificates are described on Google Wave wiki: Certificates.

Configuring ejabberd

To configure ejabberd, simply add a new listener service in the listen section of the configuration file:

{listen,
[
...
{8888, ejabberd_service, [{access, all}, {shaper_rule, fast},
{hosts, ["wave.process-one.net"],
[{password, "foobar"}]}
]}
]}.

You can then restart ejabberd. The port 8888 should now be open and ready to accept connections from the Google Wave server.

Starting the Google Wave server

With the following example command, we launch the Wave server reference implementation and ask it to connect as a component to ejabberd.

java -jar dist/fedone-0.2.jar --client_frontend_hostname localhost --client_frontend_port 3456 --xmpp_component_name=wave --xmpp_server_hostname=process-one.net --xmpp_server_ip=127.0.0.1 --xmpp_server_port=8888 --xmpp_server_secret foobar --xmpp_server_ping="" --certificate_domain process-one.net --certificate_private_key test.key --certificate_files test.cert --waveserver_disable_verification true

You should now see the Google Wave component in the server service discovery:

image

Categories: Jabber / XMPP  ejabberd  
Share article:   Tweet this   Make delicious   Stumble upon  

Comments

anonymous avatar

Nice!

I was trying to get the reference implementation going with Openfire as per the Wiki, with no success. I’m definitely going to try this.

Do you have any plans to write an Erlang Wave server?

Posted by Benjamin Nortier on 24 Jul 2009 at 14:13



 
Mickaël Rémond's avatar

To be frank, we already have a prototype Wave server implementation in Erlang.

Posted by Mickaël Rémond on 24 Jul 2009 at 14:27



 
anonymous avatar

Is there any Wave client to use with this Wave component ?

Posted by David Rousselie on 24 Jul 2009 at 14:43



 
Mickaël Rémond's avatar

We do not yet have specific clients.
You would have to play with the one provided by Google in the code repository to demonstrate federation.

Posted by Mickaël Rémond on 24 Jul 2009 at 14:45



 
anonymous avatar

Any ETA on the Erlang server implementation? The Google Java based server seems to be a real memory hog and I’d love to test your solution.

Posted by Markus Thielmann on 28 Jul 2009 at 18:34



 
Mickaël Rémond's avatar

No ETA yet.
Our plan is to help Google building a better protocol by implementing in parallel.

Posted by Mickaël Rémond on 29 Jul 2009 at 09:18



 
anonymous avatar

—client_frod_hostname should be—client_frontend_hostname

Posted by Terje Pedersen on 01 Aug 2009 at 08:46



 
Mickaël Rémond's avatar

Thank you, Terje.
This is fixed in article.

Posted by Mickaël Rémond on 01 Aug 2009 at 11:22



 
anonymous avatar

I have followed your article since I have used ejabberd before and now I have my own Wave server up and running :-) I have written my first waves on my own server and also talked to another user on an external Wave server in a wave on my server, cool :D

Posted by Terje Pedersen on 01 Aug 2009 at 12:43



 
Mickaël Rémond's avatar

Good news. If you want to share a tutorial on what you did here or add links, you are welcome :)

Posted by Mickaël Rémond on 01 Aug 2009 at 13:01



 
anonymous avatar

If we write software that works with the google wave implementation, it should work with the erlang one when it comes out (barring changes in protocol / bugs?)

Posted by Brendan Ragan on 14 Aug 2009 at 06:36



 
anonymous avatar

Wow - thanks for this!  I actually added a second VM to run openfire because I wasn’t sure how to get it to connect to my existing ejabberd.

It’ll be exciting to see an erlang implementation of Wave.  This is much appreciated and is obviously going to help adoption.

Posted by Tony Coffman on 22 Aug 2009 at 22:03



 
anonymous avatar

I get this error, on compiling with ant

BUILD FAILED
/home/wave-protocol/build.xml:145:Test org.waveprotocol.wave.examples.fedone.rpc.RpcTest failed

i tried ant as root also. what am i missing here ?

Posted by manas on 03 Oct 2009 at 08:45



 
Mickaël Rémond's avatar

This is a pure Java problem and not and Erlang or ejabberd problem.
You should ask the development team of this reference implementation for compilation problems on their software.

Posted by Mickaël Rémond on 03 Oct 2009 at 09:31



 
anonymous avatar

Very glad to hear you’re making an Erlang wave server, it will, backed with ejabberd, for sure run the most stable and reliable wave-servers within a few years, I’m sure.

(I worked for the OTP team back in the day (before OS), and have seen the marvelous things Erlang can do. Wave will rely on steady servers, if to become (very) successful, and the very nature of an Erlang system can make a server stay up!)

Keep it up!

Posted by origo on 06 Oct 2009 at 13:37



 
anonymous avatar

can you please add a link to ejabberd?
thanks

Posted by mark on 07 Oct 2009 at 15:02



 
Mickaël Rémond's avatar

ejabberd: http://www.process-one.net/en/ejabberd/

Posted by Mickaël Rémond on 07 Oct 2009 at 15:04



 
anonymous avatar

For Mac users, using MacPorts you can install ejabberd with “sudo port install ejabberd”.

Posted by Reid on 09 Oct 2009 at 04:13



 
anonymous avatar

Thanks for putting this up. Nice tutorial.

I had to add “—waveserver_disable_signer_verification true” to make it start without a error/warning.

After starting this, message do arrive at the wave-protocol server (as seen in the log produced by the wave-server) but the users are no longer able to connect. Maybe I missed something? Any help would be appreciated.

Posted by gkokmdam on 16 Oct 2009 at 22:55



 


Add comment

Name:

Email:

URL:

Smileys

Remember my personal information

Notify me of follow-up comments?