Вопрос на прямую к тем, кто хорошо разбирается в JS, другие наврядли смогут помочь. Вопрос уже задавал в теме JS/ но ответа не получил. переменная peerId, получает значения уже после загрузки страницы, но вот каким образом и откуда понять не удалось, и снифал и исследовал файрбагом, но что то до меня никак не допрет как и где... Буду благодарен за помощь. Фрагмент кода JS с этой страницы: PHP: <script> mambo.Loader.require(['{mambo.utils}Swf', '{mambo.project}Cometa'], function(){ var swf; var flashId = 'Flashko'; var anketaId = parseInt("592351451"); var type = "request"; var peerId = ""; mambo.etc = mambo.etc || {}; var comet = mambo.project.Cometa(); comet.subscribe('counters_only'); comet.bind('notify', function(e, msg){ var content = msg.content; if (msg.timeout<0) return; switch (content.action) { case "videochat": if ((parseInt(content.anketaId) == anketaId) && content.peerId) { if (console && console.log) console.log("recall: "+content.peerId); swf.call('recall', [content.peerId]); $.get('http://mamba.ru/ajax/videoChat.phtml?action=accept&anketaId=' + anketaId); } break; case "videochat_reject": if (content.anketaId == anketaId) { swf.call('deny'); } break; default: null; } }); (function(){ mambo.etc.callbackOnPublish = mambo.etc.callbackOnRetry = callbackOnPublish; mambo.etc.callbackOnClose = callbackOnClose; mambo.etc.callbackOnTimeout = callbackOnTimeout; // callbackOnTimeout(peerId); var flashvars = { timeout:30, callbackOnRetry: "mambo.etc.callbackOnRetry", callbackOnClose: "mambo.etc.callbackOnClose", callbackOnTimeout: "mambo.etc.callbackOnTimeout", sessionId: "PYyUS7uMAidxSP7iMx0Rt4pJa5AJlpFw" ,intsex: "female" ,intname: "Альбина" ,intid: "592351451" }; if (!peerId) { flashvars.callbackOnPublish = "mambo.etc.callbackOnPublish"; } else { flashvars.peerID = peerId; } swf = mambo.utils.Swf(document.getElementById(flashId),{ src: mambo.Loader.getUrl("{mambo.etc}mvm.swf", true), width: "640", height: "360", version: "10.0.0", flashvars: flashvars, menu: "false", scale: "noScale", allowFullscreen: "true", allowScriptAccess: "always", bgcolor: "#FFFFFF", wmode: "normal" }); function callbackOnPublish(peerId){ $.ajax({ type: "POST", url: "http://mamba.ru/ajax/videoChat.phtml?action=request", data: { peerId: peerId, anketaId: anketaId }, success: function(msg){ //alert( "Data Saved: " + msg ); } }); } function callbackOnClose(){ window.close(); } function callbackOnTimeout(){ $.ajax({ type: "POST", url: "http://mamba.ru/ajax/videoChat.phtml?action=sendmessage", data: { anketaId: anketaId }, success: function(msg){ } }); } })(); }); </script>
De-visible в каких случаях переменная вообще появляется? Требуется ли регистрация для этого? Требуется ли, чтобы пользователь был онлайн? Где тестовые акки, если требуется рега? Моя догадка - сюда записывается айди анкеты, с которой установлено соединение. Причем пролистывая по диагонали код флеша - записывается у принимающей стороны (то есть у того кому звоните), чтобы она могла инициировать переподключение
тестовые акки не требуется, туда записывается странный код похожий на md5 хэш, только как он генерируется не понятно. когда снифаешь, он пустой до определенного момента, потом идет следующий запрос но уже с заполненным peerId в какой момент он заполняется важно узнать.
Удалось вытащить переменную или алгоритм получения ее из флэшки? И это сейчас у всех банятся анкеты при частых запросах?
Странно конечно, но что то до моей головы совсем не допирает как формируется эта переменная... что это за код на выходе получается.
Значение приходит с сервера с событием notify (отсюда: http://comet.lovesupport.ru/_n_o_t_i_f_y_/json_rpc): Code: comet.bind('notify', function(e, msg){ // msg.content.peerId var content = msg.content; if (msg.timeout<0) return; switch (content.action) { case "videochat": if ((parseInt(content.anketaId) == anketaId) && content.peerId) { if (console && console.log) console.log("recall: "+content.peerId); swf.call('recall', [[b]content.peerId[/b]]); И только потом оказывается в флешке, в этой функции: Code: private function connectionRecall(param1:String = null) : void { TtermDebug.trace("RECALL!", param1); if (!param1) { return; } this.mode = "client"; this.peerID = param1; this.vidReceive.unblind(); this.initReceiver(); return; }