<div class="gmail_quote">2012/7/6 Aureliano Guedes <span dir="ltr"><<a href="mailto:guedes_1000@hotmail.com" target="_blank">guedes_1000@hotmail.com</a>></span><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">




<div><div dir="ltr">
Eu modifiquei, o projeto, não entendi como encaixar o AnyEvent (na verdade o AnyEvent ainda é muito complexo para mim), então usei threads. </div></div></blockquote><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

<div><div dir="ltr"><br><b><a href="https://github.com/acpguedes/Chat.git" target="_blank">https://github.com/acpguedes/Chat.git</a></b><br><br>Mas ainda está problematico.<br></div></div></blockquote><div><br></div><div>

Percebe-se, pois o modo que você está usando threads não está servindo de absolutamente nada. Seu programa não está multi-thread em nada...</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

<div><div dir="ltr"><br>Eu consigo enviar apenas uma msg, da segunda para frente não é enviada, alem disso, quando coloco para receber msg ele recebe de boa mas a interface fica travada, nem fechar ela eu consigo.<br></div>

</div></blockquote><div><br></div><div>Sobre o update e o fato dele estar travando seu código:</div><div><br></div><div><div><a href="https://github.com/acpguedes/Chat/blob/master/InterfaceSB.pm#L33-34">https://github.com/acpguedes/Chat/blob/master/InterfaceSB.pm#L33-34</a></div>

<div><br></div><div>Logo depois de criar uma thread, você está dando join() nela o que simplesmente bloqueia a "thread original" da sua interface gráfica enquanto espera a sua thread recém criada retornar... o que não acontece NUNCA, já que ele fica preso em um "while(1)" [1] para sempre, já que você nunca seta $work como zero, nem faz um "last;".</div>

</div><div><br></div><div>Talvez você tenha tentado contornar isso usando a chamada do update() (que vem do Tk::Widget), mas talvez ele não esteja pegando nenhuma mensagem nova, não entra no if nem no elsif e nunca faz esse update e por isso a interface fica "travada"?</div>

<div><br></div><div>No mais, apenas mais uma questão: Você está em um "loop infinito", bombardeando o servidor com uma cacetada de requisições com o seu get_msg... talvez fosse um pouco mais educado colocar um tempo entre uma requisição e outra, não?</div>

<div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div>Sobre o envio da 2a mensagem em diante falhar:</div><div><br></div><div>Primeiro, assim como no caso acima a sua thread não serve de nada....</div>

<div><br></div><div>Como não conheço o sistema em questão (forum invaders, shoutbox, etc) vou fazer algumas perguntas:</div><div><a href="https://github.com/acpguedes/Chat/blob/master/Shoutbox.pm#L25">https://github.com/acpguedes/Chat/blob/master/Shoutbox.pm#L25</a></div>

<div><br></div><div>1) Esse "SECURITYTOKEN" muda? Se for estático, você poderia pegar ele uma única vez, talvez logo depois de fazer o login na hora que você faz uma instância da sua classe? [2]</div><div><br></div>

<div>2) Porque você usa (.*?) ou invés de um simples (.*) no matching?</div><div><br></div><div>3) Veja bem que você está assumindo, que toda página contem esse SECURITYTOKEN, independente do que você fez por último com o seu $url... infelizmente a maneira como seu código está, não é nem um pouco "side-effect free", logo acho que você não deveria contar com isso...</div>

<div><br></div><div>Se por algum problema, ele não encontrar nada (eg. nem toda página do forum tem esse SECURITYTOKEN ou então por algum motivo a última requisição falhou ou não retornou esse token), o que terá na variável $1 e consequentemente na sua variável $token?</div>

<div><br></div><div>4) Assim como no caso anterior, você está assumindo que a sua variável $url sempre terá um "Bem vindo" em algum lugar dela... isso poderia não acontecer? Talvez você estivesse assumindo isso porque após se logar aparece algo escrito "Bem-vindo"? Mais especificamente, depois de fazer o post da 1a mensagem [4], será que o conteúdo de $url ainda contem um SECURITYTOKEN ou ainda mesmo um "Bem-vindo" em alguma parte do html?</div>

<div><br></div><div><br></div><div><br></div><div><br></div><div>[1] <a href="https://github.com/acpguedes/Chat/blob/master/InterfaceSB.pm#L49">https://github.com/acpguedes/Chat/blob/master/InterfaceSB.pm#L49</a></div><div>

<br></div><div>[2] <a href="https://github.com/acpguedes/Chat/blob/master/Shoutbox.pm#L12-17">https://github.com/acpguedes/Chat/blob/master/Shoutbox.pm#L12-17</a></div><div><br></div><div>[3] <a href="https://github.com/acpguedes/Chat/blob/master/Shoutbox.pm#L27">https://github.com/acpguedes/Chat/blob/master/Shoutbox.pm#L27</a></div>

<div><br></div><div>[4] <a href="https://github.com/acpguedes/Chat/blob/master/Shoutbox.pm#L29-31">https://github.com/acpguedes/Chat/blob/master/Shoutbox.pm#L29-31</a></div><div><br></div><div>[ ]'s</div></div>-- <br>

Bruno C. Buss<br><a href="http://www.brunobuss.net" target="_blank">http://www.brunobuss.net</a><br>