加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

如何在Perl中向Websocket的连接客户端发送定期消息

发布时间:2020-12-16 06:15:46 所属栏目:大数据 来源:网络整理
导读:这个问题类似于 Python的这个问题: WebSocket Server sending messages periodically in python 在Perl中创建WebSocket的示例使用了一个小消息发送服务: http://search.cpan.org/~topaz/Net-WebSocket-Server-0.001003/lib/Net/WebSocket/Server.pm 代码是
这个问题类似于 Python的这个问题:
WebSocket Server sending messages periodically in 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;

此示例基于事件,仅根据客户端发送的消息向客户端发送消息.如果我想向所有连接的客户端发送定期消息,那么这样做的好方法是什么?我是否可以创建在套接字服务器内触发的定期事件,或者是否有办法创建连接到服务器并发送消息的Perl客户端,然后服务器将其广播出去?

解决方法

升级到 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;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读