1
여러 프로토콜 (HTTP, IRC, XMPP)을 연결하는 시스템을 구축하기 위해 POE를 사용하고 있으며 POE를 사용하여 이러한 프로토콜을 처리하는 단일 이벤트 루프를 구동하고 싶습니다. 이 작업을 안전하게 수행 할 수 있습니까? 그렇다면 어떻게해야합니까?여러 개의 동시 Perl POE 공급자가 허용됩니까?
여러 프로토콜 (HTTP, IRC, XMPP)을 연결하는 시스템을 구축하기 위해 POE를 사용하고 있으며 POE를 사용하여 이러한 프로토콜을 처리하는 단일 이벤트 루프를 구동하고 싶습니다. 이 작업을 안전하게 수행 할 수 있습니까? 그렇다면 어떻게해야합니까?여러 개의 동시 Perl POE 공급자가 허용됩니까?
예, 가능합니다. this article을 읽으면 많은 도움이됩니다. 또한 여기 IRC 및 HTTP 함께 실행 코드 예제 : 그냥 기억 당신이 돌이 실행하기 전에 설정 모두 필요합니다 POE::Kernel->run()
#!/usr/bin/env perl
use warnings;
use strict;
use POE;
# Simple HTTP server
use POE::Component::Server::HTTP;
POE::Component::Server::HTTP->new(
Port => 32090,
ContentHandler => {
'/' => \&http_handler
}
);
sub http_handler {
my ($request, $response) = @_;
$response->code(RC_OK);
$response->content("<html><body>Hello World</body></html>");
return RC_OK;
}
# Dummy IRC bot on #bottest at irc.perl.org
use POE::Component::IRC;
my ($irc) = POE::Component::IRC->spawn();
POE::Session->create(
inline_states => {
_start => \&bot_start,
irc_001 => \&on_connect,
},
);
sub bot_start {
$irc->yield(register => "all");
my $nick = 'poetest' . $$ % 1000;
$irc->yield(
connect => {
Nick => $nick,
Username => 'cookbot',
Ircname => 'POE::Component::IRC cookbook bot',
Server => 'irc.perl.org',
Port => '6667',
}
);
}
sub on_connect { $irc->yield(join => '#bottest'); }
# Run main loop
POE::Kernel->run();
을 그리고 당신은 당신의 작업 사이 broadcast events에게 있습니다.
완벽한, 감사합니다! – Jashank