var connection = function(spark) {
var user = spark.request.user;
- spark.on('getoverview', function(callback) {
- if (!isFunction(callback)) {
- return;
- }
- var data = Object.create(null);
- for (var room in rooms) {
- data[room] = rooms[room].totusers;
- }
- callback(data);
- });
spark.on('joinauthenticated', function(room) {
if (user && ~config.rooms.indexOf(room)) {
if (sparks[user]) { // User already in a room
primus.send('getstatus', setStatus);
};
- // Show the number of players inside each room
- var roomsOverview = function(data) {
- $('.users-counter').each(function() {
- var room = $(this).prevAll('.room-name').text();
- userscounters[room] = $(this);
- $(this).text(data[room]);
- });
-
- primus.on('updateoverview', updateRoomsOverview);
- };
-
var setStatus = function(data) {
if (data.status === 0) {
isplaying = true;
$togglechat.click(hideChat);
+ $('.users-counter').each(function() {
+ userscounters[$(this).prevAll('.room-name').text()] = $(this);
+ });
+
// Open the realtime connection
- primus = Primus.connect({ strategy: false });
+ primus = new Primus({ strategy: false });
+
primus.on('open', function() {
$jplayer = $('#player').jPlayer({
ready: jplayerReady,
preload: 'auto',
volume: 1
});
+ primus.on('updateoverview', updateRoomsOverview);
+ primus.on('invalidnickname', invalidNickName);
primus.on('alreadyinaroom', alreadyInARoom);
primus.on('close', disconnect);
- primus.on('invalidnickname', invalidNickName);
primus.on('ready', ready);
- primus.send('getoverview', roomsOverview);
});
-
})();
});
});
- var primus = Primus.connect({ strategy: false });
- primus.on('open', function() {
- primus.send('getoverview', function(data) {
- for (var prop in data) {
- $('#' + prop).text(data[prop]);
- }
- });
- primus.on('updateoverview', function(room, players) {
- $('#' + room).text(players);
- });
+ var primus = new Primus({ strategy: false });
+
+ primus.on('updateoverview', function(room, players) {
+ $('#' + room).text(players);
});
})();
exports.home = function(req, res) {
res.render('home', {
loggedin: req.session.user,
- rooms: config.rooms,
+ rooms: config.rooms.map(function(room) {
+ return { name: room, players: rooms[room].totusers };
+ }),
slogan: randomSlogan()
});
};
};
exports.room = function(req, res) {
- if (~config.rooms.indexOf(req.params.room)) {
- return res.render('room', {
- loggedin: req.session.user,
- roomname: req.params.room,
- rooms: config.rooms,
- slogan: randomSlogan()
- });
+ var stations = config.rooms.filter(function(room) {
+ return room !== req.params.room;
+ });
+
+ if (stations.length === config.rooms.length) {
+ return res.status(404).send(http.STATUS_CODES[404]);
}
- res.status(404).send(http.STATUS_CODES[404]);
+
+ res.render('room', {
+ loggedin: req.session.user,
+ roomname: req.params.room,
+ rooms: stations.map(function(room) {
+ return { name: room, players: rooms[room].totusers };
+ }),
+ slogan: randomSlogan()
+ });
};
exports.signup = function(req, res) {
.row
.span16
ul.thumbnails
- - each item in rooms
+ - each room in rooms
li.span4
- a.thumbnail.relative(href=item)
- .room #{item} -
- span(id=item)
+ a.thumbnail.relative(href=room.name)
+ .room #{room.name} -
+ span(id=room.name) #{room.players}
| Players
append scripts
a.dropdown-toggle(data-toggle="dropdown",href="#") #{roomname}
b.caret
ul.dropdown-menu
- - each item in rooms
- - if (item !== roomname)
- li
- a(href=item)
- span.room-name #{item}
- i.icon-user.pull-right
- span.users-counter
+ - each room in rooms
+ li
+ a(href=room.name)
+ span.room-name #{room.name}
+ i.icon-user.pull-right
+ span.users-counter #{room.players}
- if (locals.loggedin)
li.dropdown
a.dropdown-toggle(data-toggle="dropdown", href="#") Logged in as #{loggedin}