Прикольно.
Как понимаю нужен обмен Policy чтобы сделать нормальное общение? (также как в flash'е?).
packetProcesors - как понимаю ты пушаешь функцию потом которая будет вызываться для каждого пакета.
Как тебе подход как в socket.io? В плане имён пакетов и подпиской на них?
Например:
var UnitySocket = require('unitySocket').Socket,
PolicyProvider = require('unitySocket').PolicyProvider;
// create policy server with preloaded policy provider file
var unityPolicy = new PolicyProvider(__dirname + '/public/crossdomain.xml');
unityPolicy.listen(843);
// create server socket
var server = new UnitySocket();
// if error occured
server.on('error', function(err) {
throw err;
})
// once bound
server.on('bound', function() {
// server is bound and ready to accept connections
});
// someone connects
server.on('connect', function(socket) {
// subscribe to generic event for each packet
socket.on('packet', function(name, data) {
// name == 'foo'
// data == json
});
// subscribe to packet with specific name
socket.on('foo', function(data) {
// data == json
});
// subscribe to client disconnect
socket.on('disconnect', function(data) {
// data contains reason and additional details
});
});
// bind server socket
server.listen(8080);
В node.js да и везде вообще, очень важен поток мысли и дизайн технического решения.
Например использовать EventEmitter'ы для использования event-driven парадигмы - очень збсь штука.
Также можно предоставить promises как альтернативная парадигма, это уже зависит от разраба что и как юзать.
Я сейчас promises юзаю, и порой очень просто и элегантно выходят решения (никаких пирамид).
Можно выложить на github и там уже по пути менеджить и т.п.