ГлавнаяСправка по использованию серверного ActionScriptКласс Application › application.onConnect()

application.onConnect()

application.onConnect = function (clientObj [, p1, ..., pN]){}

Срабатывает в случаи, когда клиент посылает запрос NetConnection.connect(). Этот обработчик передает объект типа Client, представляющий подключаемого клиента. Внутри обработчика объект типа Client используется для манипуляций с подключающимся клиентом. Например, эту функцию можно использовать для одобрения допуска, отклонения, перенаправления клиентского подключения, процедур авторизации, определения методов объекта типа Client для их последующего использования в удалённых вызовах посредством NetConnection.call(), назначения свойств Client.readAccess и Client.writeAccess определяющих права доступа клиента к серверным объектам.

В процессе авторизации, вся информация необходимая для идентификации пользователя должна быть передана методом NetConnection.connect() обработчику onConnect() в виде параметров (p1…, pN).

Если обработчик onConnect() неопределен, допуск на попытку клиента подключится выдается автоматически.

Если происходит несколько одновременных запросов на подключение к приложению, сервер сериализурует запросы преобразовывая их из параллельной формы в последовательную, так что бы только один обработчик application.onConnect() исполнялся за раз. Лучше всего писать быстро исполняемый код для функции application.onConnect() что бы избежать долгого ожидания клиентов в момент подключения.

Примечание: Используя каркас приложений компонентов версии 2 (то есть загружая файл components.asc в ваш серверный скрипт) вы должны использовать метод application.onConnectAccept() для того чтобы давать допуск при подключении клиентов.

Доступно с версии сервера

Flash Communication Server 1

Параметры

clientObj
Объект типа Client. Этот объект содержит информацию о подключаемом к приложению клиенте.

p1 …, pN
Необязательные параметры, передаваемые клиентским методом NetConnection.connect() обработчику application.onConnect() в процессе подключения клиента к приложению.

Возвращает

Булево значение; true заставляет сервер выдать доступ при подключении; false заставляет сервер отклонить попытку подключения.

Если возвращается true, на стороне клиента вызывается NetConnection.onStatus() с установленным для info.code значением "NetConnection.Connect.Success". Если возвращается false, на стороне клиента вызывается NetConnection.onStatus() с установленным для info.code значением "NetConnection.Connect.Rejected".

Если возвращается null или же не возвращается никакого значения, сервер переводит клиента в режим ожидания, в котором клиент не может ни принимать, ни отправлять сообщений. Если клиент находится в режиме ожидания, то позже обязательно нужно вызвать application.acceptConnection() или application.rejectConnection() что бы дать клиенту допуск или отклонить попытку его подключения. Например, с помощью NetConnection внутри обработчика событий application.onConnect(), можно создать запрос к внешнему серверу приложений, управляющему авторизацией пользователей и получив ответ в зависимости от пришедшего результата вызвать application.acceptConnection() или же application.rejectConnection().

Вы так же можете вызывать application.acceptConnection() или application.rejectConnection() внутри обработчика событий application.onConnect(). Если сделать так, любое значение возвращаемое функцией игнорируется.

Примечание: Возвращаемые 1 или 0 не тоже самое что и возвращаемые true или false.
Значения 1 и 0 обрабатываются так же, как и любые другие целые числа, не предоставляя допуска и не отклоняя попытки подключения.

A.
ActionScript на стороне клиента

B.
Серверный ActionScript

Пример

Следующий пример демонстрирует три способа выдачи допуска или отклонения попытки подключения внутри обработчика onConnect() :

(Использование 1) 
application.onConnect = function (clientObj [, p1, ..., pN]){ 
    // Сюда вставить код для метода реализующего авторизацию пользователя.
    // Возвращаемое null переводит клиента в режим ожидания. 
    return null;  
}; 
(Использование 2) 
application.onConnect = function (clientObj [, p1, ..., pN]){ 
    // Сюда вставить код для метода реализующего авторизацию пользователя.
    // Следующий код дает доступ на подключение: 
    application.acceptConnection(clientObj); 
}; 
(Использование 3) 
application.onConnect = function (clientObj [, p1, ..., pN]) 
{ 
    // Сюда вставить код для метода реализующего авторизацию пользователя.
    // Следующий код дает доступ на подключение возвращая true: 
    return true; 
};

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

// Этот код должен быть размещен в глобальной области видимости (global scope). 
 
application.onConnect = function (newClient, userName, password){ 
    // Do all the application-specific connect logic. 
    if (password == "XXXX"){ 
        newClient.writeAccess = "/" + userName; 
        this.acceptConnection(newClient); 
    } else { 
        var err = new Object(); 
        err.message = "Invalid password"; 
        this.rejectConnection(newClient, err); 
    } 
};

Если же пароль неправильный, попытка подключения пользователя отклоняется и информационный объект со свойством message установленным "Invalid password" возвращается на сторону клиента. Объект назначен infoObject.application. Что бы получить доступ к свойству message на стороне клиента используется следующий код:

ClientCom.onStatus = function (info.application.message){ 
    trace(info.application.message); 
    // Выводит "Invalid password" 
    // в панель вывода на стороне клиента. 
};

Остальные методы и свойства

Ярлыки: , ,

  1. Пока без комментариев.
  1. Пока нету.