У меня есть многопользовательская флеш-игра (AS3), и я хотел бы запретить мультибокс, например запретить пользователю запускать два (или более) экземпляров моей игры на одном компьютере. Есть ли простой и надежный способ сделать это? Я не хочу фильтровать их по IP-адресу.
Я пытался использовать LocalConnection, но это было ненадежно. Это работало большую часть времени, но иногда по какой-то причине не получалось.
Затем я попытался использовать SharedObject, чтобы записать в него случайное значение и затем проверить наличие изменений в периодическом интервале. Идея состоит в том, что при запуске второго экземпляра он перезапишет предыдущее значение, и проверка в первом экземпляре не удастся.
public function MultiboxPreventer(callback:Function)
{
uniqueKey = Math.random() * uint.MAX_VALUE;
so = SharedObject.getLocal("prefs");
so.data.multiboxKey = uniqueKey;
so.flush();
trace("MB init: " + so.data.multiboxKey);
so = null;
this.callback = callback;
var t:Timer = new Timer(10000, 0);
t.addEventListener(TimerEvent.TIMER, checkKey);
t.start();
}
private function checkKey(event:TimerEvent):void {
so = SharedObject.getLocal("prefs");
if(so.data.multiboxKey != uniqueKey) {
callback();
}
trace("MB check: " + so.data.multiboxKey);
}
но когда я проверяю это, он ведет себя так, как будто каждый экземпляр имеет свой собственный SharedObject, поэтому они никогда не перезаписывают значение друг друга.
Какой лучший способ сделать это?