After the initial release of meeseeker, I came up with a few more improvements. At first, these changes were pretty small and only warranted small updates and, as such, I felt like all I had to do was update the original post. But now, there's a bit more to go over. I'll just enumerate all of the changes since the first announcement ...
At the initial release, SUBSCRIBE
wasn't available, so once I added it, I edited the original post. In a nut-shell, you can subscribe to channels so your app is notified when any of these are added: block/transaction/op.
Full description: https://github.com/inertia186/meeseeker#using-subscribe
For this release, I added a bit more detail:
Normally, block headers are added to the
steem:block
channel. This requires one additional API call for each block. If you don't need block headers, you can configure thesteem:block
channel to only publish with theblock_num
:MEESEEKER_INCLUDE_BLOCK_HEADER=false meeseeker sync
This means that when a the steem:block
channel executes the message callback, instead of just this:
{"block_num":29861068}
... you get all this:
{
"block_num":29861068,
"previous":"01c7a4cb4424b4dc0cb0cc72fd36b1644f8aeba5",
"timestamp":"2019-01-28T20:55:03",
"witness":"ausbitbank",
"transaction_merkle_root":"a318bb82625bd78af8d8b506ccd4f53116372c8e",
"extensions":[]
}
As I said, the reason this is optional is because it represents one extra API call per block.
I also added a way to subscribe to custom_json.id
as channels.
In addition to general op channels, there's an additional channel for
custom_json.id
. This option must be enabled:MEESEEKER_PUBLISH_OP_CUSTOM_ID=true meeseeker sync
So this is cool becuse if you're interested in streaming just a particular sub-set of custom_json
, this will notify you when a particular id
shows up.
For example, subscribe steem:op:custom_json:sm_team_reveal
will only trigger on that particular Steem Monster op.
I also added an option to allow for non-expiring keys:
If you never want the keys to expire (not recommended), set
MEESEEKER_EXPIRE_KEYS
to -1:MEESEEKER_EXPIRE_KEYS=-1 meeseeker sync
It might be useful if you don't care how big your redis storage is. Not sure how useful this might be. Would require benchmarks.
I also did a bit of a refactor on the Meeseeker::BlockFollowerJob#perform
method to break it up a bit. This shouldn't affect performance. It's just for clarity.
Anyhow, I made this a pre-release (0.0.3pre1
). If you want to try it out, just update your gem with:
gem update meeseeker --pre