Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Как из as3 обращаться RED5? (http://www.flasher.ru/forum/showthread.php?t=161544)

Azo 25.07.2011 15:37

Как из as3 обращаться RED5?
 
Здравствуйте.

Мне нужно написать игру и понадобился сервер
для обмена данными между пользователями...
Поставил RED5. Вроде все работает (т.к. примеры demo работают)

//----------------

Осталось понять как же из AS3 обращаться к к серверу RED5???
ну понятно что надо обращаться на порт :5080 , а что и как отправлять?

//-----------

например у меня есть игра "драки"... есть список пользователей онлайн...
надо чтобы при нажатии на пользователя в списке отправить ему "вызов" ...
т.е. значит как то надо еще поставить слушателя на порт,
чтобы если тебя вызвали на бой ты получил уведомление...


//----------------------

Я с серверной стороной не работал раньше...
Игры делал по средствам php+mysql+flash и игры то были не сложные ...
если надо было делал таймер на проверку "не вызвали ли меня на бой" из php
Но сейчас понадобился сервер...
Может тут тоже как то через mysql базу работать надо или в red5 свои базы?

Tr1te 25.07.2011 15:47

Напиши на чем нить сервак: cpp c# java, да на чем угодно.
Работать так же как ты это делал раньше, только вместо пхп будет какой нить другой язык. На пхп тоже можно, но я очень не советую.

andrew911 25.07.2011 15:48

http://black-zorro.com/mediawiki/A_P...h_Red5._Part_1
Там цикл статей

Tr1te
Red5 это и есть сервер

Azo 25.07.2011 15:52

Цитата:

Сообщение от Tr1te (Сообщение 1014491)
Напиши на чем нить сервак: cpp c# java, да на чем угодно.
Работать так же как ты это делал раньше, только вместо пхп будет какой нить другой язык. На пхп тоже можно, но я очень не советую.

Я плохо понимаю как ... там нужно знать как подключать порты и т.д. Был бы хоть какой маленький прмимер, например отправки сообщения пользователю - я бы сразу вкурил

Tr1te 25.07.2011 15:56

Не слушайте меня, слушайте andrew911, я перепутал с красной шапкой. А в вашем случае пример, все таки придеться установить java.

Azo 25.07.2011 16:10

java на сервере установлен. Без него не установить red5 на vds

КорДум 25.07.2011 16:48

http://www.flasher.ru/forum/blog.php?b=407
Все уже продуманно, RPC. Но что нужно конкретно в серверной части писать и как там оно, это не на этот форум.

Azo 25.07.2011 17:40

нашел код сервера на java ... это и есть наверное так называемый "Демон"

У меня есть код
но я не знаю как его залить... в каком расширении файл сделать? через ftp? в какую дирректорию?
Может его как то специально нужно устанавливать чтобы под него выделялся определенный порт?


Код AS3:

import java.io.*;
import java.net.*;
 
public class Server {
 
  public static void main(String[] args) throws IOException {
    System.out.println("Welcome to Server side");
    BufferedReader in = null;
    PrintWriter    out= null;
 
    ServerSocket servers = null;
    Socket      fromclient = null;
 
    // create server socket
    try {
      servers = new ServerSocket(4444);
    } catch (IOException e) {
      System.out.println("Couldnt listen to port 4444");
      System.exit(-1);
    }
 
    try {
      System.out.print("Waiting for a client...");
      fromclient= servers.accept();
      System.out.println("Client connected");
    } catch (IOException e) {
      System.out.println("Cant accept");
      System.exit(-1);
    }
 
    in  = new BufferedReader(new
    InputStreamReader(fromclient.getInputStream()));
    out = new PrintWriter(fromclient.getOutputStream(),true);
    String        input,output;
 
    System.out.println("Wait for messages");
    while ((input = in.readLine()) != null) {
    if (input.equalsIgnoreCase("exit")) break;
    out.println("S ::: "+input);
    System.out.println(input);
    }
    out.close();
    in.close();
    fromclient.close();
    servers.close();
  }
}



Ну и код AS3 есть.. С ним пока все понятно

Код AS3:

package;
 
import flash.system.Security;
import flash.net.XMLSocket;
import flash.events.Event;
import flash.events.IOErrorEvent;
import flash.events.SecurityErrorEvent;
import flash.events.DataEvent;
 
class TrySocket
{
        // properties
        private var socket:            XMLSocket;
 
        // constructor
        public function new()
        {
                try
                {
                        Security.loadPolicyFile('xmlsocket://АДРЕС_МОЕГО_СЕРВЕРА_ИЛИ_САЙТА:4444');
 
                        trace('create socket');
                        this.socket = new XMLSocket('АДРЕС_МОЕГО_СЕРВЕРА_ИЛИ_САЙТА', 4444);
                        this.socket.addEventListener(Event.CONNECT, OnConnect);
                        this.socket.addEventListener(DataEvent.DATA, OnData);
                        this.socket.addEventListener(Event.CLOSE, OnClose);
                        this.socket.addEventListener(IOErrorEvent.IO_ERROR, OnIOError);
                        this.socket.addEventListener(SecurityErrorEvent.SECURITY_ERROR, OnSecurityError);
                }
                catch(e:Dynamic)
                {
                        trace('sluchilos strashnoe!');
                        trace(e.toString());
                }
        }
 
        static public function main():Void
        {
                Security.loadPolicyFile('xmlsocket://АДРЕС_МОЕГО_СЕРВЕРА_ИЛИ_САЙТА:4444');
                new TrySocket();
        }
 
        private function OnConnect(event:Event):Void
        {
                trace('Connected!');
                trace('send some data');
                this.socket.send('Hello\n');
                this.socket.send('How do you do?\n');
                this.socket.send('It`s work!!!\n');
        }
 
        private function OnData(event:DataEvent):Void
        {
                trace('OnData: ' + event.data);
        }
 
        private function OnClose(event:Event):Void
        {
            trace('connection closed');
        }
 
        private function OnIOError(event:IOErrorEvent):Void
        {
                trace('OnIOError');
                trace(event.toString());
        }
 
        private function OnSecurityError(event:SecurityErrorEvent):Void
        {
                trace('OnSecurityError');
                trace(event.toString());
        }
 
        public function toString():String { return 'TrySocket'; }             
}


КорДум 25.07.2011 17:44

Цитата:

в каком расширении файл сделать?
Если под винду, то exe, просто запускаете и пусть висит в процессах. Этот порт должен быть открыт в файерволе.

Kidd002 25.07.2011 17:48

То что ты нашел - это сокет сервер. Red5 - это RTMP-сервер.
Советую все-таки пройти по ссылке которую вам дали: http://black-zorro.com/mediawiki/A_P...h_Red5._Part_1
Основы Red5 там есть. В том числе и подключение к нему.

КорДум 25.07.2011 17:50

У меня собран свой домашний машина-сервер, там в процессах висят демоны. Также у меня куплен (вернее будет куплен) статический ip, в роутере прописан форвардинг портов на локальный айпи сервера. И все, теперь тот, кто знает мой айпи в сети, сможет воспользоваться моим SVN-сервером или апачем, к примеру. Если запуск сервера идет на локалхосте, то никаких форвардингов портов делать не надо, только открыть этот порт для локалхоста, если он закрыт.

Azo 25.07.2011 18:12

так сокет сервер не лучше Red5 (RTMP-сервер) ? для мультиплей игры????.

У меня CentOs VDS хостинг. Поэтому никаких exe там думаю впринципе не может быть...


тут http://black-zorro.com/mediawiki/A_P...h_Red5._Part_1 я конечно почитаю, спасибо за ссылку.. Но вроде там про Видео трансляции идет речь.. примеры не те

Kidd002 25.07.2011 18:24

По-моему сокеты быстрее, но RTMP проще. Но не уверен.
По поводу ссылки: видео трансляциям там посвящено только последние две главы.
В четвертой главе описано подключение к серверу и вызов серверных функций.
В пятой - использование общих классов для клиента и сервера.
В 6-8 описано использование SharedObjects общих для сервера и всех клиентов.
Ну а затем идут видео трансляции.

КорДум 25.07.2011 18:28

Цитата:

У меня CentOs VDS хостинг. Поэтому никаких exe там думаю впринципе не может быть...
Значит so или sh. Компилировать под иксы надо, у них же написано, на чем хостинг держится.

Kidd002 25.07.2011 18:36

КорДум: а разве java не требует компиляции?

КорДум 25.07.2011 18:51

Требует. В иксах исполнительные файлы ну никак не exe.

Azo 25.07.2011 19:02

Как компилировать JAVA я наверное долго буду понимать, поэтому пока почитаю про RED5 по ссылке которую дали.

Спасибо Люди! Дай вам господь счастья и успехов за вашу доброту :-)
ЗЫ: http://kordum.ru/projects/flashamp/ - классная музыка

wvxvw 25.07.2011 19:12

Хех... ну так, из области общих знаний: Java можно скомпилировать в .class или .jar файлы. Чтобы их выполнить вы вызываете из командной строки java -jar filename.jar например. .class - это обычно один класс, jar - заархивированые несколько классов. Jar-файлы можно потом упаковать в исполняемые файлы конкретной платформы, но так редко кто делает. Скомпилировать Java файлы - как правило к ним должен прилагаться какой-нибудь билд скрипт. Елси его нет (проект очень простой) - javac - самый популярный компилятор для Java (его есть в разных вариациях штуки 3-4, наверное, самым популярным будет от компании Sun, которая теперь перешла во владение Oracle). Чтобы заполучить этот компилятор, вам нужно будет скачать JDK с сайта Oracle. gcc тоже, на сколько я знаю, может Java компилировать, но я не пробовал.
И, лучше все-таки пробуйте сначала на своей машине, чем загружать непроверенные исполняемые файлы на удаленный сервер :) А то если что пойдет не так, вам и выписать могут...

ЗЫ. Да, и если что в Линуксе бинарным исполняемым файлам не принято давать расширения, но в Линуксе можно много чего выполнить... даже директорию :) Расширение .sh обычно говорит о том, что это шелл-скрипт (шеллов есть несколько разных, есть и непосредсвенно sh, но вы вполне можете увидеть файлы на ksh / bash с таким же расширением).

Azo 25.07.2011 19:20

Как запустить на Centos вы мне подсказали
Код:

java -jar filename.jar
А для тестирования на своем железе под WINXP я не знаю как..

Неужели нет никакого готового варианта=) залил на сервер через ftp и обращаешься к нему из своей флешки...

КорДум 25.07.2011 19:30

Цитата:

Скомпилировать Java файлы - как правило к ним должен прилагаться какой-нибудь билд скрипт. Елси его нет (проект очень простой) - javac - самый популярный компилятор для Java (его есть в разных вариациях штуки 3-4, наверное, самым популярным будет от компании Sun, которая теперь перешла во владение Oracle). Чтобы заполучить этот компилятор, вам нужно будет скачать JDK с сайта Oracle. gcc тоже, на сколько я знаю, может Java компилировать, но я не пробовал.
Вот же ;)
Цитата:

ЗЫ: http://kordum.ru/projects/flashamp/ - классная музыка
Старался :)

wvxvw 25.07.2011 19:33

Что значит "залил на сервер"? Сервер, если перевести по-простому на русский - программа раздатчик [файлов / потоков / сообщений / как больше нравится]. Т.е. логичнее его у себя на компьютере запустить (по ftp будет долго, да и если вы там чего-нибудь уроните, может вдруг оказаться, что либо не знаете, как починить, либо просто полномичий не будет починить).
В Виндовс - точно так же из командной строки вызываете исполняемеый файл который запускает Java виртуальную машину - т.е. java и передаете ему в аргументах -jar filename.jar. Если вам хочется процесс как-то автоматизировать (все-таки Виндовс командная строка не очень удобна в работе), напишите .bat файл с тем же содержанием, и будет он запускать ваш jar по клику по нему.
Соответственно, если исполняемый файл java не на системных путях, то нужно добавить папку, где он находится на путь. Чтобы проверить:
Код:

echo %PATH%
если папка с java отсутствует - правый клик на "Мой Компьютер", там в Advanced (не знаю, как по-русски перевели) -> Переменные Окружения -> найдите PATH и допишите. Виндовс как правило нужно перезапустить после таких изменений. Если перезапускать не хочется, можно в том же окне консоли, где вы будете запускать java дописать что-то типа:
Код:

set PATH=%PATH%;C:/"Program Files"/java/version-number/bin/
строка для примера - я не знаю где именно / как именно java устанавливается в Виндовс.

alatar 25.07.2011 19:52

Цитата:

Виндовс как правило нужно перезапустить после таких изменений.
Не надо.
Код:

set PATH=%PATH%;%ProgramFiles%/java/version-number/bin/


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

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