![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
![]()
Сообщение
#1
|
|
Новичок ![]() Группа: Пользователь Сообщений: 30 Регистрация: 21.07.2011 Пользователь №: 10598 ![]() |
Ребят подскажите пожалуйста, что мне лучше использовать для создания полнофункционального чата(наличие различных комнат, отображение тех, кто в комнате)? На данный момент я я пытаюсь создать чат средствами Flash ->PHP->xml. Т.к. я думаю это наиболее разумно, поскольку PHP может обращатся к MySQL, кот. может хранить инфо "в сети ли пользователь или нет, ну и возможно понадобится что-нибудь ещё". Так вот я сталкнулся с такой проблемой:
Когда я отправляю сообщение из флэшки в PHP, то PHP его записывает в xml(это проверено - работает). А вот Flash почему-то не всегда (1 раз из 10) считывает этот xml файл. Flash я запускал из vkontakte.ru, php и xml лежит на локальном сервере у меня на компе. Вот именно тот AS 3.0 код загружает этот xml файл по нажатию кнопки обновить (как разбирусь с моей проблемой, поставлю таймер для обновления): update_btn.addEventListener(MouseEvent.MOUSE_UP, loadXml); function loadXml(e:MouseEvent=null):void { var xmlRequest:URLRequest=new URLRequest("http://95.63.96.78/messages.xml"); var loader:URLLoader=new URLLoader(); loader.addEventListener(Event.COMPLETE, xmlLoaded); loader.load(xmlRequest); } function xmlLoaded(e:Event):void { xmlCHT=XML(e.target.data); xmlListCHT=xmlCHT.children(); updateText(); } function updateText():void { messageViewCHT_txt.htmlText=''; var i:uint=0; if(xmlListCHT.length()>maxMes) i=xmlListCHT.length()-maxMes; for(i;i<xmlListCHT.length();i++) { messageViewCHT_txt.htmlText+='<b>'+xmlListCHT[i].name+'</b> ('+xmlListCHT[i].date+'):'; messageViewCHT_txt.htmlText+=' '+xmlListCHT[i].text; } } |
|
|
![]() |
![]()
Сообщение
#21
|
|
![]() Ветеран конференции ![]() ![]() ![]() ![]() ![]() Группа: Пользователь Сообщений: 1129 Регистрация: 27.02.2009 Из: Moscow Пользователь №: 9144 ![]() |
не надо заниматься серверным скриптом Поковырял тут этот Циррус и понял, что я ошибся - серверный скрипт нужен. Без него никак не узнать ID другого пира (а другой пир не узнает мой ID). Вот тут серверный скрипт и должен запоминать пары имя_пира - ID пира. Странно, что адоб не заложила такую возможность у себя на p2p.rtmfp.net Правда есть альтернатива - https://github.com/OpenRTMFP/Cumulus но, наверное, это для гуру-фанов. -------------------- |
|
|
![]()
Сообщение
#22
|
|
Ветеран конференции ![]() ![]() ![]() ![]() ![]() Группа: Flash Zone Team Сообщений: 4828 Регистрация: 10.03.2005 Из: Киев Пользователь №: 5 ![]() |
Цитата файл политик всётаки отправляется, но что то флэш его отвергает!!! Antoxer_92, значит файл политик у тебя некорректный. Цитата Да кстати ещё нужно поставить в настройках флэша во вкладке publish settings снизу в combobox-е значение "access Network Only", а не "accsess Local filse Only"(значение по умолчанию)!!! Это обязательно для всех флешек работающий онлайн, о чём мы уже не раз писали на форуме. Цитата Я уже как и не пробывал этот файл политик менять, никак не получается!!! Что здесь такое!!!? Прочти документацию Адоба по созданию файла политик, а также о секюрити нововведениях в последний версиях флеша (о мета-политиках для сокетов) и достань себе примеры рабочих и корректных файлов политик. Он д.б. без обратных слэшев перед двойными кавычками, так как то был пример для PHP, а у тебя Delphi. Если ты никак не можешь на Delphi сделать рабочий сокет-сервер, сделай простой сокет-сервер на PHP, а как разберёшься с созданием корректных файлов политик, тогда уже сделаешь на Delphi. Цитата Правда есть альтернатива Будет ли Стратус/Циррус использоваться или OpenRTMFP/Cumulus - это лишь в случае если он захочет реализовать через Адобовский p2p, а пока что Antoxer_92 настроен решить задачу своим собственным сокет-сервером. -------------------- Best wishes & regards,
MustLive Администратор сайта http://mlfun.org.ua |
|
|
![]() ![]()
Сообщение
#23
|
|
Новичок ![]() Группа: Пользователь Сообщений: 8 Регистрация: 23.02.2012 Пользователь №: 10901 ![]() |
Советую {AJAX}
![]() |
|
|
![]()
Сообщение
#24
|
|
![]() Ветеран конференции ![]() ![]() ![]() ![]() ![]() Группа: Пользователь Сообщений: 1129 Регистрация: 27.02.2009 Из: Moscow Пользователь №: 9144 ![]() |
Странно, что адоб не заложила такую возможность у себя на p2p.rtmfp.net Усё работает теперь без всяких серверов (ну конечно с сервером, но скрыто, видимо функционал именно на p2p.rtmfp.net) Используем NetGroup и вспомогательные к нему классы. Вот простой пример. (Не забываем сначала зайти на http://www.adobe.com/cfusion/entitlement/index.cfm?e=cirrus и получить ключ разработчика) Код package { import flash.display.*; import flash.events.*; import flash.net.* import flash.text.* /** * ... * @author chingachgoog@mail.ru */ public class P2P extends Sprite { private var tf:TextField /* Необходимо получить ключ разработчика!!! http://www.adobe.com/cfusion/entitlement/index.cfm?e=cirrus Логинимся, получаем свой ключ и вставляем его в константу внизу: */ private const CirrusAddress:String = "rtmfp://p2p.rtmfp.net/" // К этому адресу дописываем полученный ключ разраба private var netConnection:NetConnection; private var myPeerID:String // Мой ID public function P2P():void { if (stage) init(); else addEventListener(Event.ADDED_TO_STAGE, init); } private function init(e:Event = null):void { removeEventListener(Event.ADDED_TO_STAGE, init); try { netConnection = new NetConnection(); netConnection.addEventListener(NetStatusEvent.NET_STATUS, netConnectionHandler); netConnection.connect(CirrusAddress); } catch (e:Error) { tf.appendText("\rEr=" + e) } // Отображение логов tf = new TextField() tf.autoSize = TextFieldAutoSize.LEFT tf.multiline = true tf.text = "init\r" addChild(tf) stage.addEventListener(MouseEvent.CLICK, toClick) } private function toClick(e:MouseEvent):void { var message:Object = new Object; message.text = "Hi!" myNetGroup.post(message); } private function netConnectionHandler(e:NetStatusEvent):void { var outpoot:String="\r" var o:Object=e.info as Object var message:String if (e.info.error) { message=e.info.error } else { message=e.info.code } outpoot += "\r"+message switch (message) { case "NetConnection.Connect.Success": myPeerID = netConnection.nearID outpoot+="\rmyPeerID="+myPeerID if (!myNetGroup) initGroup() break ////////////////////////////////////////// case "NetGroup.Posting.Notify": // e.info.message, e.info.messageID outpoot += "\rNetGroup.Posting.Notify " + e.info.message.text myGroup.postingEnabled = true; break; } tf.appendText(outpoot) } private var myNetGroup:NetGroup private var myGroup:GroupSpecifier private function initGroup():void { try { myGroup = new GroupSpecifier("flashzone.ru") myGroup.postingEnabled = true; myGroup.serverChannelEnabled = true; myNetGroup = new NetGroup(netConnection, myGroup.groupspecWithAuthorizations()) myNetGroup.addEventListener(NetStatusEvent.NET_STATUS, netConnectionHandler) } catch (er:Error) { } } } } PS /forum/index.php?showto...ost&p=15397 Сообщение отредактировал chingachgoog - 22.01.2013 - 16:20 -------------------- |
|
|
![]() ![]() |
![]() |
Текстовая версия | Сейчас: 13.05.2013 - 04:11 |