пятница, февраля 01, 2008

Класс SmartFoxClient. SmartFoxServer

Класс SmartFoxClient - главный класс SmartFoxServer API.

Полное определение класса: it.gotoandplay.smartfoxserver.SmartFoxClient
Потомок EventDispatcher

Конструктор:

SmartFoxClient (debug:Boolean = false)
debug - включить сообщения отладки.

Свойства:

ipAddress : String - IP-адрес SmartFoxServer.
port : int - порт для соединения со SmartFoxServer.
defaultZone : String - зона логина по умолчанию.
blueBoxIpAddress : String - IP адрес BlueBox (фича, позволяющая организовать соединение для клиентов, которые находятся за Proxy или Firewall. Прямое сокетное соединение для них не доступно, и связь осуществляется через HTTP-туннель).
blueBoxPort : Number - порт для соединения с BlueBox.
smartConnect : Boolean - позволяет включать BlueBox при отсутствии прямого сокетного соединения.
buddyList : Array - список друзей. Массив объектов, содержащих параметры каждого друга.
myBuddyVars : Array - ассоциативный массив, содержащий переменные друзей.
debug : Boolean - включает вывод отладочной информации на клиенте. Выводятся все принятые/отправленные сообщения.
myUserId : int - идентификатор текущего пользователя, который SmartFoxServer присваивает пользователю при его успешном подключении.
myUserName : String - имя текущего пользователя. Доступно только после успешной авторизации пользователя.
playerId : int - идентификатор текущего пользователя (или слот) в игровой комнате. Доступен только после подключения к игровой комнате. Отсчет начинается с 1.
amIModerator : Boolean - показывает, что сервер опознал пользователя как модератора.
activeRoomId : int - идентификатор комнаты, к которой последней раз подключался текущий пользователь. Если пользователь не вошел ни в одну в комнату, равен -1.
httpPort : int - TCP-порт, который прослушивает встроенный в SmartFoxServer веб-сервер. По умолчанию 8080.
rawProtocolSeparator : String - разделительный символ для протокола String (raw). Должен совпадать со значением <RawProtocolSeparator> в конфигурации сервера.
isConnected : Boolean - показывает, что текущий пользователь соединен с сервером.
httpPollSpeed : int - минимальный интервал в миллисекундах между двумя запросами к SmartFoxServer при использовании BlueBox. По умолчанию 750. Не рекомендуются значения меньше 50.

Методы:

loadConfig (configFile:String = "config.xml", autoConnect:Boolean = true) : void
Загружает файл внешней конфигурации клиента.
configFile - имя файла внешней конфигурации клиента. Не следует путать с файлом конфигурации сервера.
autoConnect - после успешной загрузки файла конфигурации, автоматически вызвать метод connect().
Пример файла конфигурации:


<SmartFoxClient>
<ip>127.0.0.1</ip>
<port>9339</port>
<zone>simpleChat</zone>
<debug>true</debug>
<blueBoxIpAddress>127.0.0.1</blueBoxIpAddress>
<blueBoxPort>9339</blueBoxPort>
<smartConnect>true</smartConnect>
<httpPort>8080</httpPort>
<httpPollSpeed>750</httpPollSpeed>
<rawProtocolSeparator>%</rawProtocolSeparator>
</SmartFoxClient>



getConnectionMode () : String
Возвращает текущий режим соединения:
CONNECTION_MODE_DISCONNECTED - нет соединения.
CONNECTION_MODE_SOCKET - сокетное соединение.
CONNECTION_MODE_HTTP - соединение по http-туннелю.

connect (ipAdr:String, port:int = 9339) : void
Устанавливает соединение с SmartFoxServer.
ipAdr - IP-адрес сервера
port - порт сервера

disconnect () : void
Закрывает соединение с SmartFoxServer.

addBuddy (buddyName:String) : void
Добавляет пользователя в список друзей.
buddyName - имя добавляемого пользователя.

autoJoin () : void
Автоматически присоединяет пользователя к комнате, заданной в текущей зоне как комната для соединения по умолчанию.

clearBuddyList () : void
Удаляет всех пользователей из списка друзей. (Устаревший)

createRoom (roomObj:Object, roomId:int = -1) : void
Динамически создает комнату в текущей зоне. Если комната игровая, то пользователь автоматически присоединяется к вновь созданной комнате.
name, maxUsers, maxSpectators, isGame, uCount, vars, extension - аналогичны параметрам конфигурации комнат.
password : Устанавливает пароль на комнату и делает ее приватной.
exitCurrentRoom: Если комната игровая - присоединяться к комнате сразу после ее создания.

getAllRooms () : Array
Возвращает список всех комнат в текущей зоне. Каждый из элементов - объект it.gotoandplay.smartfoxserver.data.Room. Возвращается список комнат, который хранится на клиенте. Запрос на сервер не отправляется.

getBuddyByName (buddyName:String) : Object
Получить объект с параметрами друга из списка друзей используя имя.
buddyName - имя друга.

getBuddyById (id:int) : Object
Получить объект с параметрами друга из списка друзей используя идентификатор.
id - идентификатор друга.

Возвращаемый объкт содержит свойства:
id : идентификатор друга.
name : имя друга.
isOnline : друг в режиме on=line.
isBlocked : друг заблокирован
variables : переменные друга.

getBuddyRoom (buddy:Object) : void
Послать запрос на получение идентификатора комнаты, в которой находится друг.
buddy - объект искомого друга из списка друзей.

getRoom (roomId:int) : Room
Получить объект комнаты из списка комнат, используя идентификатор.
ОЧЕНЬ ВАЖНО: Объект Room не будет получать переменные, если в конфигурации параметр roomListVars не установлен, или установлен в false. Методы getVariable() и getVariables() не будут возвращать никаких переменных.

getRoomByName (roomName:String) : Room
Получить объект комнаты из списка комнат, используя имя комнаты.

getRoomList () : void
На сервер отправляется запрос на получение списока всех комнат в текущей зоне. Затем, обработав событие onRoomListUpdate, можно получить свежий список комнат.

getActiveRoom () : Room
Возвращает объект текущей активной комнаты. Сервер позволяет присоединяться к нескольким комнатам одновременно.

getRandomKey () : void
Послать запрос серверу на получение строки с уникальной последовательностью случайных символов. Затем, обработав событие onRandomKey, можно получить строку с ключом.

getUploadPath () : String
Получить http-адрес директории для закачки на сервер файлов по умолчанию.

getVersion () : String
Получить версию SmartFoxServer Flash API.

joinRoom (newRoom:*, pword:String = "", isSpectator:Boolean = false, dontLeave:Boolean = false, oldRoom:int = -1) : void
Подключиться к комнате.
newRoom - Если String, то имя комнаты, если int - идентификатор.
pword - пароль для входа, если комната приватная.
isSpectator - присоединиться в качестве наблюдателя.
dontLeave - покидать ли текущую комнату.
oldRoom - идентификатор покидаемой комнаты.
ВАЖНО: Возможно только после получения события onRoomListUpdate, автоматически генерируемого после авторизации в зоне.

leaveRoom (roomId:int) : void
Покинуть комнату.
roomId - идентификатор комнаты.

loadBuddyList () : void
Загрузить список друзей для текущего пользователя.

login (zone:String, name:String, pass:String) : void
Осуществить стандартную процедуру авторизации. Авторизация подтверждается событием onLogin.
zone - Имя зоны.
name - Имя пользователя.
pass - Пароль пользователя.

logout () : void
Выйти из текущей зоны. Выход подтверждается событием onLogout.

removeBuddy (buddyName:String) : void
Удалить друга из списка друзей.
buddyName - имя друга.

roundTripBench () : void
Послать запрос на определение скорости соединения. Ответ можно получить по событию onRoundTripResponse.

sendBuddyPermissionResponse (allowBuddy:Boolean, targetBuddy:String) : void
Послать запрос на разрешение добавить себя в список друзей.
allowBuddy - разрешить/не разрешить.
targetBuddy - имя друга.

sendPublicMessage (message:String, roomId:int = -1) : void
Послать массовое сообщение в текущую комнату.
message - текст сообщения.
roomId - идентификатор комнаты, в случае если пользователь соединен с несколькими комнатами.

sendPrivateMessage (message:String, recipientId:int, roomId:int = -1) : void
Послать приватное сообщение пользователю.
message - текст сообщения.
recipientId - идентификатор пользователя, которому отправляется сообщение.
roomId - идентификатор комнаты, в случае если пользователь соединен с несколькими комнатами.

sendModeratorMessage (message:String, type:String, id:int = -1) : void
Послать сообщение модератора в текущую зону, комнату, или конкретному пользователю в текущей комнате.
message - текст сообщения.
type -
MODMSG_TO_USER: сообщение пользователю,
MODMSG_TO_ROOM: сообщение в комнату,
MODMSG_TO_ZONE: сообщение в зону.
id - идентификатор зоны, комнаты, или пользователя.

sendObject (obj:Object, roomId:int = -1) : void
Послать объект Actionscript пользователям текущей комнаты.
obj - объект Actionscript.
roomId - идентификатор комнаты, в случае если пользователь соединен с несколькими комнатами.

sendObjectToGroup (obj:Object, userList:Array, roomId:int = -1) : void
Послать объект Actionscript пользователям текущей комнаты.
obj - объект Actionscript.
userList - список идентификаторов пользователей.
roomId - идентификатор комнаты, в случае если пользователь соединен с несколькими комнатами.

sendXtMessage (xtName:String, cmd:String, paramObj:*, type:String = "xml", roomId:int = -1) : void
Запрос на выполнение серверного скрипта (расширения).
xtName - имя серверного скрипта.
cmd - имя команды (функции), предусмотренной в скрипте.
paramObj - объект, содержащий данные для передачи в серверный скрипт
type - тип протокола для сериализации запроса.
XTMSG_TYPE_XML: формат XML
XTMSG_TYPE_STR: строка с разделителем (raw протокол)
XTMSG_TYPE_JSON: протокол JSON.
Для сокращения трафика не рекомендуется использовать XML.
roomId - идентификатор комнаты, в случае если пользователь соединен с несколькими комнатами.

setBuddyBlockStatus (buddyName:String, status:Boolean) : void
Заблокировать/разблокировать пользователя в списке друзей.
buddyName - имя друга
status - true - заблокировать, false - разблокировать.

setBuddyVariables (varList:Array) : void
Установить переменные друга для текущего пользователя (сам пользователь рассматривается как чей-то друг).
varList - ассоциативный массив, где ключ - имя переменной, значение - значение переменной.

setRoomVariables (varList:Array, roomId:int = -1, setOwnership:Boolean = true) : void
Установить переменные комнаты. Переменные комнаты полезны для организации централизованного хранилища данных, доступных всем клиентам комнаты. При изменении/добавлении/удалении данных все пользователи уведомляются об этом событием onRoomVariablesUpdate .
varList - массив объектов переменных.
roomId - идентификатор комнаты, в случае если пользователь соединен с несколькими комнатами.
setOwnership - false - для предотвращения изменения переменной в случае, если ее значение изменено другим пользователем.

Объект переменной:
name : String - имя переменной.
val : * - значение переменной.
priv : Boolean - если true, изменять переменную может только ее создатель.
persistent : Boolean - если true, переменная существует до тех пор, пока ее создатель подключен к зоне, если false - переменная существует до тех пор, пока ее создатель подключен к комнате. По умолчанию - false.

setUserVariables (varObj:Object, roomId:int = -1) : void
Установить переменные одного или нескольких пользователей.
varObj - объект, в котором каждое из свойств является переменной для установки/изменения.
roomId - идентификатор комнаты, в случае если пользователь соединен с несколькими комнатами.

switchSpectator (roomId:int = -1) : void
Переключиться из режима наблюдателя в режим игрока. Работает при условии наличия свободного слота. Смена подтверждается событием onSpectatorSwitched.
roomId - идентификатор комнаты, в случае если пользователь соединен с несколькими комнатами.
ВАЖНО: Переключение происходит лишь один раз: наблюдатель - игрок. Обратного переключения нет. После запроса, приходит событие подтверждения переключения. Как только пользователь стал игроком, переключение можно вызывать сколько угодно - ответ от сервера не прийдет.

uploadFile (fileRef:FileReference, id:int = -1, nick:String = "", port:int = -1) : void
Загрузить файл на встроенный в SmartFoxServer веб-сервер.
Upload a file to the embedded webserver.
fileRef - объект flash.net.FileReference.
id - идентификатор текущего пользователя.
nick - имя текущего пользователя.
port - порт встроенного веб-сервера

1 комментарий:

Константин комментирует...

Важное дополнение по setUserVariables если в config.xml для зоны у вас будет прописано customlogin = true то:
вручную прописывается
_sfs.getRoomList();
_sfs.MyUserName;
_sfs.MyUserId;