brcontainer 16 Denunciar post Postado Dezembro 16, 2011 É possivel fazer uma barra de progresso em um SOCKET no AS3? Vejam como é a idéia: port = 80; host = "localhost"; sock = new Socket; sock.addEventListener(Event.CONNECT,_conn); sock.addEventListener(ProgressEvent.SOCKET_DATA,_onData); sock.connect(host,port); function _onData(e:ProgressEvent) { trace("Reposta do servidor: "+sock.readUTFBytes(sock.bytesAvailable)); } function _conn(e:Event){ var bodyPart:Array ="Conteudo RAW com 8 megas"; var headerPart:Array = [ "POST /php-service.php HTTP/1.1", "Content-Type: application/soap+xml; charset=utf-8", "Host: "+host, "Content-Length:" + bodyPart.length, "Connection: close", "\r\n" ]; sock.writeUTFBytes(headerPart.join("\r\n")); sock.writeUTFBytes(bodyPart);//CORPO - conteudo que vai ser feito download pelo webservice sock.flush(); } Assim eu consigo conectar e enviar, mas se o arquivo que eu estiver para enviar for muito grande eu não quero que o cliente pense que travou ou deu erro, queria implementar uma barra de progresso. Pois que o conteudo que estou enviando para o servidor é muito pesado ocorre isso. Consegui simular uma barra de progresso, mas não é a mesma coisa. Obrigado por lerem. Qualquer luz por favor me avisem Compartilhar este post Link para o post Compartilhar em outros sites
Irineu Antunes 2 Denunciar post Postado Janeiro 3, 2012 Cara use o protocolo HTTP POST para subir o arquivo... Quando eu trabalhava com Flash, também preferia converter o objeto pra bytes, e enviar via amf um ByteArray pro servidor... Via socket o que você está fazendo é mandar "via http-post" no braço Mas sobre o pbar de upload, sinceramente nunca vi.. Mas de uma olhada neste link: http://code.google.com/p/in-spirit/wiki/MultipartURLLoader talvez ajude ;) Compartilhar este post Link para o post Compartilhar em outros sites
brcontainer 16 Denunciar post Postado Janeiro 3, 2012 Obrigado, mas não esta muito claro... Cara use o protocolo HTTP POST para subir o arquivo... Não é o que eu to fazendo? Que eu saiba um socket é qualquer conexão, no caso estou usando porta 80, obviamente seria HTTP (na maioria dos servidores). Se eu envia-se para porta 25(smtp geralmente) então ao invés de passar um comando HTTP eu passaria um comando assim: var headerPart:Array = [ "HELO "+host, "MAIL FROM: mail@domain.ext", "RCPT TO: mail@otherdomain.ext", ]; Obviamente que em SMTP eu tenho que fazer um feedback para cada comando enviado do Array no loop, acaso haja falha no comando haveria um BREAK no loop, mas isso é outra história. Eu fiz com URLLoader a mesma conexão, porem somente Loader tem progress, URLLoader tem progress mas não verifica o envio do "_urlloader.data" somente a resposta, e geralmente as repostas tem 1k então não vale de nada para um UPLOAD, esse link que você me enviou eu já tinha visto, só não consegui fazer o download ainda. Mas assim que eu entender o código e construir(se for possivel fazer como eu quero) eu disponibilizo uma CLASSE (package)para facilitar. Feliz ano novo e obrigado por responder. Compartilhar este post Link para o post Compartilhar em outros sites
Irineu Antunes 2 Denunciar post Postado Janeiro 3, 2012 Cara é que via socket acho q você está indo mtu "raíz". Se se assim está rolando então sussa ;) Pq com urlrequest já fazia o uplaod de boas (http://labs.findsubstance.com/2008/04/03/as3-upload-encode-images/) Via file reference tmb dá! e na documentação mostra um evento disparado durante o upload: http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/net/FileReference.html#upload%28%29 progress:ProgressEvent — Dispatched periodically during the file upload operation. não testei, mas espero ter ajudado ;) Compartilhar este post Link para o post Compartilhar em outros sites
brcontainer 16 Denunciar post Postado Janeiro 3, 2012 Então mas é um sistema de integração, ele "sincroniza" os bancos de dados de ambos servidores por WEBSERVICE quanto menos trabalho manual melhor. Por isso não posso usar a função UPLOAD do filereference. Então eu já fiz em URLLoader+URLRequest, porem "ProgressEvent.PROGRESS", só funciona na resposta da página e não no envio. Grato mais uma vez pela atenção, teria alguma outra ideia? Compartilhar este post Link para o post Compartilhar em outros sites