Livespaces need to be federated on two levels: at the Elvin level in order to be able to exchange low level Elvin events between the rooms' routers, and at the Livespace level in order to logically connect the entities in the two rooms.
In this guide, we assume that you already have two operational Livespaces which are able to connect at the IP network level. We also assume you're using the Avis Elvin router.
Before starting, you need to designate one Livespace as the "master" and one as the "slave": these are logical designations only and simply help you decide which Livespace initiates the federation links, it doesn't matter which one is which.
In the examples below, we assume the two rooms are named "room1" and "room2" and room1's main server is the designated master.
Find and edit the avisd.config
file. On Windows this is in
C:\Program Files\Avis\config
, on Linux /etc/avis
, on Max OS X
/usr/local/etc/avis
.
Uncomment the Federation.Activated: yes
line.
On the both servers, add the following:
Federation.Subscribe[Livespace] = \ (string (TICKERTAPE) && string (TICKERTEXT) && string (USER)) \ || (string (NEWSGROUPS) && string (FROM_NAME) && string (SUBJECT)) \ || (string (Group) && string (Message) && string (From)) \ || (int32 (Presence-Protocol) || int64 (Presence-Protocol)) \ || (int32 (Livespace-Protocol) && Entity-Type != "room") Federation.Provide[Livespace] = \ (string (TICKERTAPE) && string (TICKERTEXT) && string (USER)) \ || (string (NEWSGROUPS) && string (FROM_NAME) && string (SUBJECT)) \ || (string (Group) && string (Message) && string (From)) \ || (int32 (Presence-Protocol) || int64 (Presence-Protocol)) \ || (int32 (Livespace-Protocol) && Entity-Type != "room") Federation.Default-Class: Livespace
Federation.Connect[Livespace] = ewaf://room2.avis.server
Federation.Listen = ewaf://0.0.0.0:2916
Mar 18 11:08:45: Avis: Info: Federation outgoing link for ewaf://room2.avis.server:2916 established with "room2.avis.server/131.185.xxx.xxx", remote server domain "1010@room2"
On the master room1 server only: edit the config/room1/services/livespace.federation.properties
file, and make the following changes:
federatorId: MyRoom_MyServer
federate.Room\ 1<>Room\ 2.computer: mirror federate.Room\ 1<>Room\ 2.presence: mirror federate.Room\ 1<>Room\ 2.teamthink: replicate federate.Room\ 1<>Room\ 2.teamscope: replicate federate.Room\ 1<>Room\ 2.clipboard: replicate federate.Room\ 1<>Room\ 2.screen\ sharing: replicate
Note the room names between the "<>", and note the use of \ to quote spaces in the names. The room name is the room's full name as it appears in Ignite the Livespace Browser, not the room's short name.
Run the livespace.services.federation
service on the room1 server
by editing the config/room1/deploy/server.deploy
file and adding
the following at init level 5:
start livespace.services.federation
To add more "slave" rooms:
Do the same Avis config steps for the new room (i.e. add Subscribe
,
Provide
and Default-Class
items, enable federation).
Add a Federation.Connect
line for the new room to the room1
router.
Duplicate the "federate." lines in the room1
livespace.federation.properties
file for the new room.