Vij*_*ati 5 perl nonblocking websocket
这个问题类似于 Python 的这个问题: WebSocket Server 定期在 python 中发送消息
在 Perl 中创建 WebSocket 的示例使用了一个小消息发送服务:http : //search.cpan.org/~topaz/Net-WebSocket-Server-0.001003/lib/Net/WebSocket/Server.pm
代码是:
use Net::WebSocket::Server;
my $origin = 'http://example.com';
Net::WebSocket::Server->new(
listen => 8080,
on_connect => sub {
my ($serv, $conn) = @_;
$conn->on(
handshake => sub {
my ($conn, $handshake) = @_;
$conn->disconnect() unless $handshake->req->origin eq $origin;
},
utf8 => sub {
my ($conn, $msg) = @_;
$_->send_utf8($msg) for $conn->server->connections;
},
binary => sub {
my ($conn, $msg) = @_;
$_->send_binary($msg) for $conn->server->connections;
},
);
},
)->start;
Run Code Online (Sandbox Code Playgroud)
此示例是基于事件的,并且仅根据从客户端发送的消息向客户端发送消息。如果我想向所有连接的客户端发送定期消息,那么这样做的好方法是什么?我可以创建一个在套接字服务器内触发的周期性事件,或者有没有办法创建一个连接到服务器并发送消息的 Perl 客户端,然后服务器将其广播出去?
小智 3
升级到Net::WebSocket::Server v0.3.0,它通过其“tick_period”参数和“tick”事件内置了此功能。请参阅下面的示例:
use Net::WebSocket::Server;
my $ws = Net::WebSocket::Server->new(
listen => 8080,
tick_period => 1,
on_tick => sub {
my ($serv) = @_;
$_->send_utf8(time) for $serv->connections;
},
)->start;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2160 次 |
| 最近记录: |