hardlounge/lib/server.js

64 lines
1.2 KiB
JavaScript
Raw Normal View History

2014-03-06 10:11:25 -05:00
var _ = require("lodash");
2014-03-04 11:31:52 -05:00
var connect = require("connect");
2014-03-04 12:22:06 -05:00
var io = require("socket.io");
2014-03-06 10:11:25 -05:00
var models = require("./models.js");
exports.listen = listen;
var sockets;
var networks = [];
var network = new models.Network;
var chan = _.assign(new models.Channel, {
name: "Network",
type: "network"
});
network.channels.push(chan);
networks.push(network);
function listen(port) {
var http = connect()
.use(connect.static("client"))
.listen(port);
sockets = io.listen(http).sockets;
sockets.on("connection", function(socket) {
init(socket);
});
};
2014-03-04 11:31:52 -05:00
2014-03-06 10:11:25 -05:00
function init(socket) {
socket.on(
"input",
function(input) {
handleUserInput(input)
2014-03-05 12:33:11 -05:00
}
2014-03-06 10:11:25 -05:00
);
sockets.emit("event", _.assign(new models.Event, {
action: "redraw",
data: networks
}));
};
2014-03-05 12:33:11 -05:00
2014-03-06 10:11:25 -05:00
function handleUserInput(input) {
var id = input.id;
var text = input.text;
var message = _.assign(new models.Message, {text: text});
var event = _.assign(new models.Event, {
action: "add",
type: "message",
data: message,
target: id
});
sockets.emit("event", event);
_.each(networks, function(n) {
var chan = _.findWhere(n.channels, {id: id});
if (chan !== "undefined") {
chan.messages.push(message);
2014-03-05 12:33:11 -05:00
}
2014-03-06 10:11:25 -05:00
});
2014-03-04 11:31:52 -05:00
};