in reply to RPC via mysql when running under websocketd?

You could look at Postgres, which has NOTIFY. There also are many, many other methods of doing inter-process communication (IPC). Maybe using the filesystem and inotify works on your OS, or simply writing to a pipe. Using some kind of shared memory as a blackboard is also a good approach if all you care about is whether there are new events.

You could also look at adding a message queue (server) to your setup. This brings another server into your setup. You could also use long polling HTTP ("REST") requests to notify you of a change.

In any case, you will be looking at adding a message queue to your setup, or at least a notification queue. This will bring you additional headaches as you will need to plan on whether receiving a message and acting on it is idempotent or not. It will bring you greater flexibility because you can easily add more subscribers to your infrastructure that way.

  • Comment on Re: RPC via mysql when running under websocketd?

Replies are listed 'Best First'.
Re^2: RPC via mysql when running under websocketd?
by schweini (Friar) on Sep 09, 2015 at 18:34 UTC
    I ended up going the unix signal route - once a process starts, it saves its PID to the database.
    The process then goes into a while (<>) loop to wait for input (although i might want to change that to something non-blocking later on)
    When one process wants to 'speak' to another, it stores the message in the database (could use shared memory or a file for that), looks up the other process' PID, and sends it a SIGUSR1. The other process has a signal handler installed which, when triggered, looks up the data to be received in the database, and does it's thing.
    Only thing i'm worried about is race conditions between handling the signal, and waiting for and receiving input, but i think i can reduce the risk of that.