使用mojolicious(perl Web框架)为每行rsync输出发送websocket消息

时间:2013-11-25 22:16:52

标签: perl websocket rsync mojolicious

我想在网站上显示rsync副本的进度。我已经使用\ rd作为换行符使用while循环读取了rsync的stdout,因此我可以获得更新的进度(因为rsync将每个更新用\ r分隔,以便将它写在同一个线)。

我想通过网络套接字将它发送到浏览器但是我遇到的问题是mojo不会发送文本直到while循环完成后(从而击败获取更新进度的perps)

我在网上找到的壁橱解决方案是this。 但我不知道会有多少行,我不知道如何自动化递归。

这是我到目前为止所拥有的:

websocket '/rsync' => sub { 

    my $self = shift; 
    # Incoming message 
    $self->on(message => sub { 
            my ($self, $msg) = @_; 
        $self->send("echo: $msg"); 
    }); 
    { 
        open(RSYNC, "-|", "rsync -av --progress --stats '/dir1' /dir2"); 
        local $/ = "\r"; 
        while(<RSYNC>) { 
            $self->send($_); 
        } 
    } 
};

编辑:将“r”更改为“\ r”

0 个答案:

没有答案