my $sslSocket = IO::Socket::SSL->new( Listen => 5, LocalPort => XXX, Proto => 'tcp', SSL_startHandshake => 0, SSL_cert_file => 'XXX', SSL_key_file => 'XXX', ) or die "failed to listen: $!"; my $server = Net::Async::WebSocket::Server->new( on_client => sub { my ( undef, $client ) = @_; $client->configure( on_text_frame => sub { my ( $self, $frame ) = @_; $self->send_text_frame( $frame ); }, ); }, on_handshake => sub { my ( $self, $client, $hs, $continue ) = @_; $continue->( 1 ); } ); my $loop = IO::Async::Loop->new; $loop->add( $server ); $server->listen( handle => $sslSocket )->get;