Perl モジュール Net::WebSocket::Server を使用して、ドメインにアクセスしているユーザー向けのメッセージ配信システムを構築しています。私は CPAN モジュール ページのサンプル スクリプトを使用しています。これは私が実行したコードです。
#!/usr/bin/perl
use strict;
use warnings;
use IO::Socket::SSL;
use Net::WebSocket::Server;
my $ssl_server = IO::Socket::SSL->new(
Listen => 5,
LocalPort => 4000,
Proto => 'tcp',
SSL_cert_file => '/ssl/domain.com.crt',
SSL_key_file => '/ssl/domain.com.key',
) or die "failed to listen: $!";
my $port = 4000;
#print "Starting WebSocket chat server on port $port, press Ctr-C to disconnect\n$
Net::WebSocket::Server->new(
listen => $ssl_server,
on_connect => sub {
my ($serv, $conn) = @_;
$conn->on(
utf8 => sub {
my ($conn, $msg) = @_;
# print "got: $msg\n";
print $_->ip() for( $serv->connections() );
print $_->port() for( $serv->connections() );
$_->send_utf8($msg) for( $serv->connections() );
},
);
},
)->start;
IPや接続IDなど、オンラインのユーザーを提供するある種の情報を抽出し、それらをすべて配列に入れたいと思います。私のコメントされた試みが接続データを取得し、datadumper を使用してそれを印刷するのを見ることができますが、これはエラーまたはハッシュのみをもたらしました。IPまたは接続IDを抽出して配列に入れる方法を誰かが理解できるので、一意の接続がいくつあるかがわかりますか?
解決:
Net::WebSocket::Server->new(
listen => $ssl_server,
on_connect => sub {
my ($serv, $conn) = @_;
$conn->on(
utf8 => sub {
my ($conn, $msg) = @_;
$IP = $conn->ip();
$PORT = $conn->port();
# print "got: $msg\n";
$_->send_utf8('IP: ' . $IP . ' PORT: ' . $PORT . ' '. $msg) for( $serv->connections() );
},
);
},
)->start;