64 lines
2.2 KiB
JavaScript
64 lines
2.2 KiB
JavaScript
/*
|
|
Message builder for communicating over the websocket
|
|
*/
|
|
(function(context) {
|
|
|
|
var CLIENT_TARGET = "client";
|
|
var SERVER_TARGET = "server";
|
|
var SESSION_TARGET_PREFIX = "session:";
|
|
var USER_TARGET_PREFIX = "user:";
|
|
var CLIENT_TARGET_PREFIX = "client:";
|
|
|
|
var msg = context.Messages = {
|
|
LOGIN : "LOGIN",
|
|
LOGIN_ACK : "LOGIN_ACK",
|
|
LOGIN_MUSIC_SESSION : "LOGIN_MUSIC_SESSION",
|
|
LOGIN_MUSIC_SESSION_ACK : "LOGIN_MUSIC_SESSION_ACK",
|
|
USER_JOINED_MUSIC_SESSION : "USER_JOINED_MUSIC_SESSION",
|
|
LEAVE_MUSIC_SESSION : "LEAVE_MUSIC_SESSION",
|
|
LEAVE_MUSIC_SESSION_ACK : "LEAVE_MUSIC_SESSION_ACK",
|
|
HEARTBEAT : "HEARTBEAT",
|
|
TEST_SESSION_MESSAGE : "TEST_SESSION_MESSAGE",
|
|
PING_REQUEST: "PING_REQUEST",
|
|
PING_ACK: "PING_ACK",
|
|
SERVER_GENERIC_ERROR : "SERVER_GENERIC_ERROR",
|
|
SERVER_REJECTION_ERROR : "SERVER_REJECTION_ERROR"
|
|
};
|
|
|
|
var message_factory = {};
|
|
|
|
function client_container(type, target, inner) {
|
|
var type_field = type.toLowerCase();
|
|
var body = { "type" : type, "route_to" : target};
|
|
body[type_field] = inner;
|
|
return body;
|
|
}
|
|
|
|
// ping the provided client_id
|
|
message_factory.ping = function(client_id) {
|
|
var data = {};
|
|
var target = CLIENT_TARGET_PREFIX + client_id;
|
|
return client_container(msg.PING_REQUEST, target, data);
|
|
};
|
|
|
|
// create a login message using user/pass
|
|
message_factory.login_with_user_pass = function(username, password) {
|
|
var login = { username : username , password : password };
|
|
return client_container(msg.LOGIN, SERVER_TARGET, login);
|
|
};
|
|
|
|
// create a login message using token (a cookie or similiar)
|
|
message_factory.login_with_token = function(token) {
|
|
var login = { token : token };
|
|
return client_container(msg.LOGIN, SERVER_TARGET, login);
|
|
};
|
|
|
|
// create a music session login message
|
|
message_factory.login_music_session = function(music_session) {
|
|
var login_music_session = { music_session : music_session };
|
|
return client_container(msg.LOGIN_MUSIC_SESSION, SERVER_TARGET, login_music_session);
|
|
};
|
|
|
|
window.message_factory = message_factory;
|
|
|
|
})(window); |