Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Как узнать о втором экземпляре приложения на данной машине? (http://www.flasher.ru/forum/showthread.php?t=209696)

illusion21 09.12.2014 20:53

Как узнать о втором экземпляре приложения на данной машине?
 
Всем доброго времени суток. Делаю сетевую игру и необходимо запретить на одной машине запускать два клиента. Точнее не то чтобы запускать, а играть этим клиентам между собой

Пробовал использовать localConnection и SharedObject. Все замечательно, но в гадском хромовском PPAPI флэшплеере клиент запускается в "песочнице" и с другими браузерами просто не контачит. Так как в новой версии флэшплеера все хромиум браузеры принудительно переведены на PPAPI, то это огромная проблема. Мозилла с ИЕ друг друг другу могут данные передавать через вышеназваные методы, но вот их общение с любыми другими браузерами этими способами невозможно.

Если бы как-то можно было получить какой-то уникальный идентификатор который был бы связан с конкретной машиной, то я мог бы передавать данные на сервер и запрещать игру уже оттуда, но я не нашел способа как получить этот уникальный ID. Возможно как-то яваскрипт задействовать для этого, но им я не владею.

Если у кого-то есть идеи как можно реализовать запрет на совместную игру двух клиентов, запущенных на одной машине, то подскажите пожалуйста

DEVORON 09.12.2014 21:56

А что если клиент будет рандомно генерировать какой-то ключ в момент запуска, который будет записываться вместе с текущим временем в SharedObject каждые 1-2 минуты? Если захочет новый экземпляр запустить, то он посмотрит ключ и время. Если времени с последнего обновления прошло больше 2х минут(допустим), то он запустится и запишет свой ключ и время. Если существует активный ключ, но не его, то пошёл нафиг. Если существует активный ключ и он его - обновляем время.

undefined 09.12.2014 22:05

как вариант через netGroup связывать 2 флэшки тогда и серв не нужен. Кстати там-же и peerId выдадут. он как- раз уникален, если все-же хочется через сервак
типа
Код AS3:

private const SERVER:String = "rtmfp://stratus.adobe.com/";
private const group_name:String="group1";
private var nc:NetConnection;
nc = new NetConnection();
nc.addEventListener(NetStatusEvent.NET_STATUS, hNS,false,0,true);
        // To connect to Stratus, pass the server name and your developer key.
        nc.connect(SERVER + DEVKEY);
        private function hNS(e:NetStatusEvent):void{
                        switch(e.info.code){
                                case "NetConnection.Connect.Success":
                                        trace(e.info.code);
                                        connect();
                                          break;
                                case "NetGroup.Neighbor.Connect": // e.info.neighbor
                                      //если зашел сюда,значит флэшка уже запущена
                                        break;
                                            default:
                                            break;
                                            }
}
private function connect():void{
                        // Create a GroupSpecifier object to pass to the NetGroup constructor.
                        // The GroupSpecifier determines the properties of the group
                        var group_spec:GroupSpecifier;
                        group_spec = new GroupSpecifier(group_name);
                        group_spec.serverChannelEnabled = true;
                        ng = new NetGroup(nc, group_spec.groupspecWithAuthorizations());
                        ng.addEventListener(NetStatusEvent.NET_STATUS, hNS,false,0,true);
                }

devkey выдают на сайте адоба

dimarik 09.12.2014 22:59

Лучше сразу дайте возможность играть с нескольких аккаунтов или сделайте невыгодной возможность играть с двух аккаунтов одновременно. Путь запрета ни к чему не приведет. Уже проверено.

illusion21 09.12.2014 23:05

Цитата:

Сообщение от DEVORON (Сообщение 1176123)
А что если клиент будет рандомно генерировать какой-то ключ в момент запуска, который будет записываться вместе с текущим временем в SharedObject каждые 1-2 минуты? Если захочет новый экземпляр запустить, то он посмотрит ключ и время. Если времени с последнего обновления прошло больше 2х минут(допустим), то он запустится и запишет свой ключ и время. Если существует активный ключ, но не его, то пошёл нафиг. Если существует активный ключ и он его - обновляем время.

Пытался такое. Во всех браузерах работающих на PPAPI (а сейчас это не только хром но и всех основанные на хромиуме) sharedObject свой, которые не пересекается с теми кто работает на NPAPI (мозилла, ИЕ, сафари)...

Тоесть это вариант который легко обходится запуском разных браузеров.

DEVORON 10.12.2014 13:35

Цитата:

Сообщение от illusion21 (Сообщение 1176129)
Пытался такое. Во всех браузерах работающих на PPAPI (а сейчас это не только хром но и всех основанные на хромиуме) sharedObject свой, которые не пересекается с теми кто работает на NPAPI (мозилла, ИЕ, сафари)...

Тоесть это вариант который легко обходится запуском разных браузеров.

Не знал. Спасибо. Приму к сведению)


Часовой пояс GMT +4, время: 13:09.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.