Естественно события надо будет вручную отправлять. То есть адаптер скачал инфу, и вызвал у себя this.fireEvent("datareceived", data). А обработчик в свою очередь перебирает всех подписчиков, и передает им что нужно, или только тем кому надо, там уж от специфики приложения зависит. Есть паттерн такой Observer, реализаций тьма. Мне часто приходится пользоваться фреймворком Ext, там все компоненты от него наследуют.
Ext.utul.Observable, можете код посмотреть. Если используете jquery, то события можно поджигать методом trigger. Например
var Adapter = function () {
Adapter.prototype.init.apply(this, arguments);
}
Adapter.prototype = {
players: [],
init: function () {
jQuery.bind(this, "datareceived", function (data) {
jQuery.each(this.players, function (player) {
if ( player.isNeedUpdate() ) {
// или всегда отправлять игроку data, а у игрока завести массив с обновлениями, и если ему надо обновиться, то он обновляется из него
player.update(data);
}
});
});
},
downloadData: function () {
var data = doSomething();
jQuery.trigger(this, "datareceived", data);
},
addSubscriber: function (player) {
this.players.push(player);
}
}