3d-interface/socket.js

77 lines
2.0 KiB
JavaScript
Raw Normal View History

2015-06-09 17:40:58 +02:00
var fs = require('fs');
var sleep = require('sleep');
2015-06-11 10:12:50 +02:00
var geo = require('./geo/Mesh.js');
2015-06-09 17:40:58 +02:00
module.exports = function(io) {
io.on('connection', function(socket) {
2015-06-10 11:24:59 +02:00
var index = 0;
var vIndex = 0;
var fIndex = 0;
2015-06-11 10:12:50 +02:00
var mesh;
2015-06-10 11:24:59 +02:00
2015-06-10 11:59:02 +02:00
// console.log(socket.conn.remoteAddress + " connected !");
2015-06-09 17:40:58 +02:00
2015-06-11 11:05:05 +02:00
// socket.on('disconnect', function() {
// console.log(socket.conn.remoteAddress + " disconnected !");
// });
2015-06-09 17:40:58 +02:00
socket.on("request", function(path) {
2015-06-10 11:59:02 +02:00
// console.log('Asking for static/data/spheres/' + res + '.obj');
2015-06-09 17:40:58 +02:00
var regex = /.*\.\..*/;
if (regex.test(path)) {
socket.emit('error');
socket.disconnect();
}
2015-06-10 11:24:59 +02:00
2015-06-11 10:12:50 +02:00
mesh = new geo.MeshStreamer(path, function() {
socket.emit('ok');
2015-06-11 11:05:05 +02:00
// console.log("Display mesh !");
// for (var i = 0; i < mesh.orderedElements.length; i++) {
// console.log(mesh.orderedElements[i].toString());
// }
// var counter = 0;
// for (var i = 0; i < mesh.orderedElements.length; i++) {
// if (mesh.orderedElements[i] instanceof geo.Usemtl) {
// counter++;
// }
// }
// console.log(counter);
2015-06-11 10:12:50 +02:00
});
2015-06-11 11:05:05 +02:00
2015-06-10 11:24:59 +02:00
});
socket.on('next', function() {
2015-06-12 19:34:22 +02:00
var bound = 500;
2015-06-11 10:12:50 +02:00
var toSend = [];
var elt;
2015-06-11 10:16:59 +02:00
for (var limit = mesh.index + bound; mesh.index < limit; mesh.index++) {
2015-06-11 10:16:59 +02:00
elt = mesh.orderedElements[mesh.index];
2015-06-11 10:12:50 +02:00
if (elt) {
2015-06-11 10:16:59 +02:00
elt.sent = true;
2015-06-11 10:12:50 +02:00
toSend.push(elt.toList());
} else {
break;
2015-06-10 11:50:47 +02:00
}
2015-06-11 10:16:59 +02:00
2015-06-11 10:12:50 +02:00
}
2015-06-10 14:48:11 +02:00
2015-06-11 10:12:50 +02:00
socket.emit('elements', toSend);
2015-06-09 17:40:58 +02:00
2015-06-11 10:12:50 +02:00
if (!elt) {
socket.disconnect();
}
2015-06-10 11:24:59 +02:00
2015-06-09 17:40:58 +02:00
});
});
}