[Catalyst] Catalyst with Twiggy with Pocket.IO (Comet)
Gabriel Andrade
gabiruh at gmail.com
Wed Nov 28 15:04:20 GMT 2012
On Nov 28, 2012, at 9:21 AM, Jaro Zajonc <jaro.zajonc at gmail.com> wrote:
> But if I direct traffic from Apache directly to Twiggy server I'd bypass Catalyst Authentication/Authorization part for Comet session, right?
> I'd like to allow only authenticated users to subscribe to comet channel.
> I am sure I am missing some really simple piece of the puzzle :-\
I've been through the same dilemma. Solved it by sharing appropriate
data between Plack and Catalyst using Catalyst::TraitFor::Request::Plack::Session.
It's clumsy and I haven't thoroughly tested it, though… So, there might be (serious)
limitations.
Here's how it goes… something along these lines:
builder {
enable 'Session',
store =>
Plack::Session::Store::Cache->new( cache => CHI->new( driver => (…) ) );
mount '/' => $catalyst_psgi_app; # auth, etc..
# (you're logging in first, aren't you?)
# when you reach here, auth is already made
# and Plack::Session is stuffed
mount '/socket.io' => PocketIO->new(
handler => sub {
$_[1]->{'psgix.session'}->{can_foo};
}
);
};
… and then
> plackup -s AnyEvent::FCGI myapp.psgi
Also, here, a message queue suits it well for sharing data and
messaging passing, given you've already pointed the proper queue key
in session.
More information about the Catalyst
mailing list