Tôi có đoạn mã này, tôi đang cố gắng để đẩy một chuỗi các máy chủ mỗi X giây như:Mojolicious và trì hoãn WebSocket
#!/usr/bin/env perl
use Mojolicious::Lite;
use EV;
use AnyEvent;
use POSIX qw(strftime);
get '/' => sub {
my $self = shift;
$self->render('main');
};
websocket '/echo' => sub {
my $self = shift;
my $w;
$w = AE::timer 3, 1, sub {
$self->send('Got it');
};
# $self->send(strftime("Server $$: %a %b %e %H:%M:%S %Y", localtime));
};
app->start();
__DATA__
@@ main.html.ep
<html>
<head>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script>
</head>
<body>
<table id="tableID">
<tbody>
</tbody>
</table>
<script type="text/javascript">
var ws = new WebSocket('ws://192.168.1.104:3000/echo');
ws.onopen = function() {
alert('Connection opened');
};
ws.onerror = function() { alert("Error"); };
ws.onmessage = function (msg) {
$("#tableID").find('tbody')
.append($('<tr>')
.append($('<td>')
.text(msg.data)
)
);
};
</script>
</body>
</html>
AFAIK Mojo sử dụng IO::Loop
kiện vòng lặp, mà tôi đoán nên tốt với AnyEvent
Điều này không hiệu quả và tôi tự hỏi tại sao. Khi tôi xóa phần AE và bỏ ghi chú đơn giản send
, tôi thấy kết quả trong trình duyệt.
PS: Chỉ cần thử nghiệm với WebSockets và Mojo đối với một số dự án, tôi sẽ cần phải sử dụng Cả Mojo và AnyEvent + WebSockets
bạn có thể vui lòng bao gồm các mẫu không? –
@JoelBerger Đã thêm – snoofkin