2014-03-06 15:11:25 +00:00
|
|
|
var _ = require("lodash");
|
2014-03-04 16:31:52 +00:00
|
|
|
var connect = require("connect");
|
2014-03-04 17:22:06 +00:00
|
|
|
var io = require("socket.io");
|
2014-03-06 15:11:25 +00: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 16:31:52 +00:00
|
|
|
|
2014-03-06 15:11:25 +00:00
|
|
|
function init(socket) {
|
|
|
|
socket.on(
|
|
|
|
"input",
|
|
|
|
function(input) {
|
|
|
|
handleUserInput(input)
|
2014-03-05 17:33:11 +00:00
|
|
|
}
|
2014-03-06 15:11:25 +00:00
|
|
|
);
|
|
|
|
sockets.emit("event", _.assign(new models.Event, {
|
|
|
|
action: "redraw",
|
|
|
|
data: networks
|
|
|
|
}));
|
|
|
|
};
|
2014-03-05 17:33:11 +00:00
|
|
|
|
2014-03-06 15:11:25 +00: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 17:33:11 +00:00
|
|
|
}
|
2014-03-06 15:11:25 +00:00
|
|
|
});
|
2014-03-04 16:31:52 +00:00
|
|
|
};
|