Hi, I am digging in the Mojo::Pg::PubSub possibilities, to use multiple 
channels, and I would like to fully understand data contained in this 
variable: $pubsub

  # Forward messages from PostgreSQL to the browser
  my $cb = sub ($pubsub, $message) { $c->send($message) };
  $c->pg->pubsub->listen(mojochat => $cb);
  
This code excerpt comes from Joel Berger Vuechat, a great example I have 
used to learn 
(https://github.com/jberger/VueChat/blob/master/ex/vue_chat_comp.pl)
  

At first I thought that $pubsub was part of the response from PostgreSQL, 
along with $message, so I printed a Dump:

$VAR1 = bless( {
                 'json' => {},
                 'chans' => {
                              'mojochat2' => [
                                               sub { "DUMMY" },
                                               sub { "DUMMY" }
                                             ],
                              'mojochat' => [
                                              sub { "DUMMY" },
                                              sub { "DUMMY" },
                                              sub { "DUMMY" },
                                              sub { "DUMMY" },
                                              sub { "DUMMY" }
                                            ]
                            },
                 'pg' => bless( {
                                  'pubsub' => $VAR1,
                                  'password' => '********',
                                  'database_class' => 'Mojo::Pg::Database',
                                  'events' => {},
                                  'username' => '********',
                                  'dsn' => 
'dbi:Pg:dbname=********;host=********',
                                  'pid' => 30059,
                                  'options' => {
                                                 'RaiseError' => 1,
                                                 'AutoInactiveDestroy' => 1,
                                                 'AutoCommit' => 1,
                                                 'PrintError' => 0,
                                                 'PrintWarn' => 0
                                               }
                                }, 'Mojo::Pg' ),
                 'events' => {
                               'disconnect' => [
                                                 sub { "DUMMY" }
                                               ]
                             },
                 'db' => bless( {
                                  'events' => {
                                                'close' => [
                                                             sub { "DUMMY" }
                                                           ],
                                                'notification' => [
                                                                    sub { 
"DUMMY" }
                                                                  ]
                                              },
                                  'pg' => $VAR1->{'pg'},
                                  'dbh' => bless( {}, 'DBI::db' ),
                                  'handle' => 
\*Mojo::Pg::Database::__ANONIO__,
                                  'listen' => {
                                                'mojochat' => 2,
                                                'mojochat2' => 1,
                                                'mojo.pubsub' => 1
                                              },
                                  'watching' => 1
                                }, 'Mojo::Pg::Database' )
               }, 'Mojo::Pg::PubSub' );
               
               
               
Now I see that $pubsub is not coming from PostgreSQL. It is the current 
object from Mojolicious PubSub.      
               
In 'chans' I can see all the current channels (mojochat and mojochat2). 
Both have an array of current connections, and all the elements are exactly 
the same: 'sub { "DUMMY" }'.

So, when using Hypnotoad, each Worker will have its own arrays. Am I right?

I was trying to get the number of connected users, but they will be 
scattered through all the Workers, and I don't know how to access each 
worker.

I was also trying to find a way to send a message exclusively to one user, 
but the first step, before anything else, is to have an Id for each 
connection, and I only have "DUMMY". 

It should be great if someone walks me through this.

Regards:
Nacho B.



-- 
You received this message because you are subscribed to the Google Groups 
"Mojolicious" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to mojolicious+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/mojolicious/e78937be-5958-40a9-a5ef-84d066a43289n%40googlegroups.com.

Reply via email to