PDA

Просмотр полной версии : NetConnection.Call.Failed


maxjoin
21.08.2008, 15:33
здравствуйте, помогите разобраться, не могу получить ответ от fms!
использую такой код в HelloWorld.as
package {
import flash.display.MovieClip;
import flash.net.Responder;
import flash.net.NetConnection;
import flash.events.MouseEvent;
import flash.events.NetStatusEvent;
import flash.events.AsyncErrorEvent;
import flash.events.SecurityErrorEvent;

public class HelloWorld extends MovieClip {
private var nc:NetConnection;
private var responder:Responder = new Responder(onReply);
public function HelloWorld() {
textLbl.text = "";
connectBtn.label = "Connect";
connectBtn.addEventListener(MouseEvent.CLICK, connectHandler);
}
public function connectHandler(event:MouseEvent):void {
if (connectBtn.label == "Connect") {
trace("Connecting...");
nc = new NetConnection();
nc.client = new Client();
nc.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler);
nc.addEventListener(AsyncErrorEvent.ASYNC_ERROR, asyncErrorHandler);
nc.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
// Connect to the server.
nc.connect("rtmp://localhost/HelloWorld");
// Call the server's client function serverHelloMsg, in HelloWorld.asc.
nc.call("serverHelloMsg", responder, "World");
connectBtn.label = "Disconnect";
} else {
trace("Disconnecting...");
// Close the connection.
nc.close();
connectBtn.label = "Connect";
textLbl.text = "";
}
}
private function securityErrorHandler(event:SecurityErrorEvent):void {
trace(event.text);
}
private function asyncErrorHandler(event:AsyncErrorEvent):void {
trace(event.text);
}
private function netStatusHandler(event:NetStatusEvent):void {
trace("connected is: " + nc.connected );
trace("event.info.level: " + event.info.level);
trace("event.info.code: " + event.info.code);
}
private function onReply(result:Object):void {
trace("onReply received value: " + result);
textLbl.text = String(result);
}
}
}
class Client {
public function onBWCheck():Number {
return 0;
}
public function onBWDone():void {
trace("onBWDone -> ok!");
}
}

и в HelloWorld.asc

application.onConnect = function(client) {
client.serverHelloMsg = function(helloStr) {
return "Hello, " + helloStr + "!";
}
application.acceptConnection(client);
}

в ошибке пишет NetConnection.Call.Failed,
файл HelloWorld.asc расположен как указано в fms.ini, в директории C:\Program Files\Adobe\Flash Media Server 3\scriptlib

подскажите что не так!

wvxvw
21.08.2008, 16:56
Ну, во-первых, никто не знает, что такое textLbl и connectBtn...
Во-вторых, connectHandler судя по названию должен вызываться, когда происходит коннект, а не клик, зачем себя и остальных вводить в заблуждение?
В-третих, вызвать подряд connect() и call() не получится, нужно дожаться когда соединение установиться, и тогда уже общаться с сервисом.
Ну и private var responder:Responder = new Responder(onReply);
так делать плохо: никто вам не гарантирует, что интерпретатор всегда будет сначала инициировать методы, а потом свойства.
Кроме всего прочего, если connectHandler можно вызвать больше одного раза - это значит, что вы с каждым вызовом будете добавлять слушателей, т.е. после первого клика на событие отреагирует только одна функция, после второго - та же функция, но уже 2 раза.

maxjoin
22.08.2008, 02:51
Ну, во-первых, никто не знает, что такое textLbl и connectBtn...
находятся во fla файле.
Во-вторых, connectHandler судя по названию должен вызываться, когда происходит коннект, а не клик, зачем себя и остальных вводить в заблуждение?
исправил btclick
В-третих, вызвать подряд connect() и call() не получится, нужно дожаться когда соединение установиться, и тогда уже общаться с сервисом.
сервер присылает след строки
Connecting...
connected is: true
event.info.level: status
event.info.code: NetConnection.Connect.Success
onBWDone -> ok!
connected is: true
event.info.level: error
event.info.code: NetConnection.Call.Failed

Ну и private var responder:Responder = new Responder(onReply);
так делать плохо: никто вам не гарантирует, что интерпретатор всегда будет сначала инициировать методы, а потом свойства.
делал по примеру как в http://livedocs.adobe.com/flashmediaserver/3.0/hpdocs/flashmediaserver_dev_guide.pdf стр 4. Я новичок и только начинаю разбираться, пожалуйста подскажите как лучше сделать. я прикреил архив если вас не затруднит могли бы Вы поправит код.

terbooter
22.08.2008, 09:16
переобзавите HelloWorld.asc
в main.asc или в main.js

maxjoin
23.08.2008, 04:34
переобзавите HelloWorld.asc
в main.asc или в main.js

все равно пишет
Connecting...
connected is: true
event.info.level: status
event.info.code: NetConnection.Connect.Success
onBWDone -> ok!
connected is: true
event.info.level: error
event.info.code: NetConnection.Call.Failed

может у меня fms не настроен или в скриптах что не так написано?

2morrowMan
23.08.2008, 04:51
Кроме всего прочего, если connectHandler можно вызвать больше одного раза - это значит, что вы с каждым вызовом будете добавлять слушателей, т.е. после первого клика на событие отреагирует только одна функция, после второго - та же функция, но уже 2 раза.

Неправда. Сами вводите новичка в заблуждение.

maxjoin
25.08.2008, 02:08
так кто нибудь поможет мне???

alexcon314
25.08.2008, 08:37
maxjoin, поднимать темы бессодержательными постами типа "есть тут знающие?" или "да помогите уже!" запрещено правилами. За это получают предупреждения. И потом, никто не обязан вам помогать, вы не забыли?

FeaR!!
26.08.2008, 23:51
Скачай вот этот архивчик, мне wvxvw помог. Огромное ему спасибо за это.
Может чем поможет моё творение =)