Using Google Wave reference implementation with ejabberd
Posted by Mickaël Rémond on July 24, 2009Following 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:
Categories: Jabber / XMPP ejabberd
Share article:
Tweet this
Make delicious
Stumble upon
Comments
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:13To be frank, we already have a prototype Wave server implementation in Erlang.
Posted by Mickaël Rémond on 24 Jul 2009 at 14:27Is there any Wave client to use with this Wave component ?
Posted by David Rousselie on 24 Jul 2009 at 14:43We do not yet have specific clients.
You would have to play with the one provided by Google in the code repository to demonstrate federation.
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:34No ETA yet.
Our plan is to help Google building a better protocol by implementing in parallel.
—client_frod_hostname should be—client_frontend_hostname
Posted by Terje Pedersen on 01 Aug 2009 at 08:46Thank you, Terje.
This is fixed in article.
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:43Good 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:01If 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:36Wow - 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:03I 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:45This 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.
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:37can you please add a link to ejabberd?
thanks
For Mac users, using MacPorts you can install ejabberd with “sudo port install ejabberd”.
Posted by Reid on 09 Oct 2009 at 04:13Thanks 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

Stay Informed
Subscribe to our RSS feed or follow us on Twitter to receive alerts when we post new news stories and blogs.
Subscribe to ProcessOne RSS feed
Follow ProcessOne on Twitter
Follow Mickaël on Twitter
Search our blogs
To make it easier for you to find blogs on topics that you are interested in, we have grouped them into categories depending on the different themes addressed in each blog. Categories include:
ProcessOne
Jabber / XMPP
ejabberd
Erlang
CEAN
Information Technology
Misc
Tsung
French
Mozilla
Employment opportunities
IMtrends
All categories
Become a ProcessOne partner
Find out about the benefits of joining ProcessOne’s partnership programme.
Click here
Our products and services
We offer packaged solutions comprising all of the server-side and client-side technology necessary to create valuable new instant messaging applications. In addition, we offer a range of services for delivering customised solutions.
Click here for full details