Awesome
This Javascript API can be used to facilitate the communication with the Handshake server. It is a small event based messaging API that was designed to take a minimum effort to learn and can be easily used in your own projects.
How to use
If you learn best by example, you can - There is a full game delivered in the examples folder, where you can simply copy the handshake parts to quickly start building your own games!
Download and install
Download the source from this website and put it anywhere in your project directory (eg: js, javascripts, ..). Currently you need require.js to include the handshake files into your project. This is very simple though:
In your .html file: <script type="text/javascript" src="path/to/require.js"></script>
In your .js files where you need the framework: as GAME:
require({ baseUrl: "path/to/handshake" }, ['handshake/Client'], function(Client) {
client = new Client("193.170.119.85", 8008, gameId);
}
as CONTROLLER (eg. Iphone/Android):
require({ baseUrl: "path/to/handshake" }, ['handshake/Host'], function(Host) {
gameHost = new Host("193.170.119.85", 8008);
}
Connect to Server
as GAME:
require({ baseUrl: "path/to/handshake" }, ['handshake/Client'], function(Client) {
client = new Client("193.170.119.85", 8008, gameId);
client.connect();
}
as CONTROLLER (eg. Iphone/Android):
require({ baseUrl: "path/to/handshake" }, ['handshake/Host'], function(Host) {
gameHost = new Host("193.170.119.85", 8008);
gameHost.connect();
}
Send and Receive Messages between game and controllers
as GAME:
require({ baseUrl: "path/to/handshake" }, ['handshake/Client'], function(Client) {
client = new Client("193.170.119.85", 8008, gameId);
// standard event
gameHost.on("ready", function(hostId) {
console.log("game started with id: " + hostId);
});
// standard event
gameHost.on("closed", function(event) {
console.log("Handshake Server closed connection");
});>
// standard event
gameHost.on("clientConnect", function(client) {
console.log("client " + client.id + " connected with device: " + client.deviceType);
});
// standard event
gameHost.on("clientDisconnect", function(client) {
console.log("client " + client.id + " disconnected");
});
// CUSTOM EVENT FROM CONTROLLER
gameHost.on("clientName", function(event) {
var client = gameHost.getClient(event.sender);
// save the name for each client
client.name = event.data.name;
// do something with this information... eg:
client.send("gameStart", {});
});
client.connect();
}
as CONTROLLER (eg. Iphone/Android):
require({ baseUrl: "path/to/handshake" }, ['handshake/Host'], function(Host) {
gameHost = new Host("193.170.119.85", 8008);
// standard event
client.on("ready", function(id) {
console.log("connected to game " + gameId + " with id " + id);
client.send("host", "clientName", { name: name });
});
// CUSTOM EVENT FROM GAME
client.on("gameStart", function(event) {
setupControlListener();
});
client.connect();
}
Roadmap
The Handshake project currently uses plain WebSockets to communicate with a ruby server that routes messages between the connected clients. We will probably change to another implementation like Socket.Io + node.js. But for you this won't make any difference, there will only be minimal changes to this API