网络套接字和Mojolicus刷新



我正在使用Mojolicus::Lite模块来运行websockets服务器来处理协议。这是我目前用于客户端的测试代码:

socket.onopen = function(){$.each(proxies, function(){socket.send(this);});}
socket.onmessage = function(response){alert(response);}

和服务器

websocket '/' => sub { 
    my $self = shift;
    $self->on(message => sub {
        my ($self, $message) = @_;
        my @info = split /-/,$message;
        $mech_proxy = WWW::Mechanize->new(timeout=>$info[1], autocheck=>0);
        $self->send(test_proxy($info[0]) => sub{sleep(int(rand(10)))});
    });
};
app->start;

无论如何,我认为这将明显避免刷新输出的需要,因为最初我实际上只做一个发送客户端,然后在服务器端循环发送返回消息;这不起作用,因为我无法刷新输出,必须等待循环结束。然而,改变它并没有帮助,因为我仍然需要等到最后一次服务器端发送完成,然后数据才能发送到客户端。你知道我如何获得处理过程的实时"更新"吗,即在发送时输出服务器响应?

编辑:我对setTimout(socket.send(this),1000)的结果喜忧参半。我认为,可能为了刷新数据,必须在服务器端处理并完全写入之前的数据后才能发送新数据。如果事实证明这是正确的,那么应该可以编写客户端,使其仅在收到以前发送的数据的结果后发送新数据;这将达到获得所需"实时"更新的效果。

干杯

OK对其进行了整理,如上所述,只有在收到回复后才能发送新数据(下面的代码)。还有一点值得注意,令人惊讶的是,这种方式实际上比使用jquery循环更快。

socket.onopen = function(){
    socket.send(proxies[0]+'-'+timeout);
    proxies.splice(0,1);
}
socket.onmessage = function(response){
    if (proxies.length > 0) {
        socket.send(proxies[0]+'-'+timeout);
        proxies.splice(0,1);
    }
document.write(response.data);
}

相关内容

  • 没有找到相关文章

最新更新