Update your STEEM apps! Big changes coming for 3rd party developers

in #steemitdev7 years ago (edited)

We have created a new public jussi endpoint for third party applications to use. Jussi is our custom built caching layer, for use with steemd and other various services (such as SBDS). The jussi endpoint is available now at https://api.steemit.com. Condenser (the front-end application for steemit.com) is already using api.steemit.com today. We encourage all third party developers to begin using the new endpoint right away. We are planning to deprecate the steemd.steemit.com endpoint in favor of api.steemit.com in the near future.

What does this mean for third party developers?

For our public steemd endpoint using api.steemit.com, apps will need to speak to it through http/jsonrpc instead of websockets. The libraries we maintain will soon be updated to default to api.steemit.com instead of steemd.steemit.com, which will cover a lot of apps that don't set an endpoint and just use the default.

JSONRPC has been chosen to be used for all of our infrastructure for a variety of reasons; the two biggest being the ability to more easily load balance and manage connections, and the ease of use for new developers - as JSONRPC is much more common than websockets.

Is it going to be difficult to update my steem apps?

In most cases it will be extremely easy to make this change. The four most popular steem libraries (steem-js, steem-python, radiator, and dsteem) that the majority of steem apps are built with already support http/jsonrpc. Other libraries may as well. All you'll need to do is update the endpoint/url to https://api.steemit.com from the older wss://steemd.steemit.com. If you have a custom written app that doesn't use one of the popular libraries you will need to change your transport method to http/jsonrpc from websockets.

How long do I have?

The timeframe for deprecating steemd.steemit.com is not determined yet, but you should start implementing this change as soon as possible if you are using our public nodes for your STEEM apps. We will announce a final date before the endpoint is taken away.

Sort:  

I'm a user..not a geek
I have no idea what this means.
That said..I REALLY APPRECIATE the update.
It makes me feel a LOT better knowing that the devs
ACTUALLY EXIST
and are working on Steemit.
I'd have REALLY APPRECIATED
similar updates during the last few weeks when Steemit was broke.

saya pak sekarang mengalami masalah .
1.badwit kehabisan darah
2.reputasi

  1. Steempower,steemdolar
    Mohon dibantu selesaikan masalahnya ,tolong pak ya.

I put an oar in here ,since we are in the same boat.

Basically, for end users, you can expect steemit.com and all steem-based tools to become more stable and more responsive.

Two imperfect metaphors that describe what happened in two levels of detail:

  1. You ever gone to an office to talk with a super expert about something, but they are too busy. But, it turns out that their assistant was helpful and solved your problems without you having to wait around.

  2. Whenever you want to work on Steem, you go down to the steem office. There's this one really smart giant, but kinda grumpy robot who takes your request and goes to work magic on the blockchain then gets back to you. They tried making his brain bigger and giving Botty tons of coffee to get him to work faster. They even tried giving him more arms. Still Botty got way too busy and developed a bit of a temper. It's pretty hard to build more like Botty because he's fat, has a ton of custom parts and fills up the building. He also slurps down the electricity and takes ages to wake up if he goes to sleep.
    But, it turns out that most of what botty does is read stuff from steem. And, there's some bots made from high quality mass produced parts that are way less fat, slurp less power and wake up super quick when summoned. These bots are super good at handling your steem requests and remembering what they read just in case you or the next customer needs it. They don't like to bother Botty unless they need too. These guys are called Jussi.
    So now, you when you go to steem office you talk with any of the available Jussi bots. If you're just asking to read something, chances are your Jussi bot can pull it from their memory. When Jussi can't remember something or they need to write something into the blockchain (like upvotes, postings etc) then they go ask Botty and get back to you at super fast bot speeds.
    When the steem office gets really busy, it's super easy to open up more counters and have more Jussi bots ready to serve - afterall Jussi bots are made from cheap mass produced but high quality parts. When steem gets less busy then some Jussi counters can be closed to save power.

That's kinda what happened.

I'm going to turn this into a post.

That explains everything.
Thank you.

Like Everitt, I'm an end user, not a developer.
My IT experience is in usability and human factors (aka "developers' most hated person"), not code.
I'm also PR and communications.
I just want things to WORK... and when they don't, I want someone to wave a flag and say "Yeah, shit's broken right now, but we're fixing it..."
Silence when shit breaks is a bad deal. People lose confidence.
So THANK YOU for the update.

These more frequent updates are great. Please keep them coming & thanks for all your hard work.

But got some bugs. I updated one of the server that runs on Yehey.org Load Balancer servers to use https://api.steemit.com as suggested instead of wss://steemd.steemit.com. Getting this error.

[ Europe - Yehey.org server ]
<-- POST /api/v1/page_view 2d2bb8e00b64d68bbd85fd3b82
-- /page_view --> ip=2600:8806:600:2c70:ed83:5c3a:4542:a06f uid=2d2bb8e00b64d68bbd85fd3b82 page=/pick_account
<-- POST /api/v1/csp_violation 2d2bb8e00b64d68bbd85fd3b82
-- /csp_violation --> https://yehey.org/pick_account : https://api.steemit.com/ -- Mozilla/5.0 (Windows
NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.75 Safari/537.36
--> POST /api/v1/csp_violation 200 5ms 0B 2d2bb8e00b64d68bbd85fd3b82
--> POST /api/v1/page_view 200 34ms 12B 2d2bb8e00b64d68bbd85fd3b82

Everything is working fine but when I start in the homepage, click on new or hot I have to reload/refresh the screen to see the posts. Then go back to homepage, it also require to refresh. This behavior is only happening when using https://api.steemit.com.

I will also post this findings in github.com.
Thank you for your hard work.
@Yehey

For scripts/bots running #radiator, you can switch to api.steemit.com by upgrading the library:

$ bundle update

Also see: How to Update Radiator Apps

 7 years ago (edited)

Thanks for adding this information inertia. In your next radiator release can you make this the default? We will be doing the same with steem-js and steem-python, and I'm sure @almost-digital will be updating dsteem also.

EDIT: I see that that is a bundle update so you must have already done so, great :)

dsteem doesn't have default nodes, but I'll make sure to change the examples to show api.steemit.com 😁

I am currently implementing a HTTP Client for SteemJ - The next version will support it ;)

Good news, glad to hear it!

Yep, it's been the default for almost two weeks. :D

But of course, people have to at least do bundle update. There are additional steps if they aren't using the defaults, which is likely. But most of that can be picked up by recloning the app and installing from scratch, which I go over in How to Update Radiator Apps.

Interesting - I believe we weren't quite production ready on that two weeks ago. It's usually best to wait for a formal announcement to update such things. But thank you for being on top of it anyway, much appreciated.

Hay @justinw - I would totally agree with you, but as a third party developer myself I have to say that this is quite impossible. - I need to implement the stuff at the same time you do it, because you do not provide a lot of information to us. From my point of view this is more or less the first time I hear about a change early enough.

If we talk about Steem Updates its quite a nightmare - You release a new Steem Version, everyone updates the nodes, and depending on the changes, a lot of third party tools are no longer usable (at least parts of them).

I've talked to timcliff some time ago that it would be really great to have a changelog for third party devs some weeks before you release changes.

That would be really really nice <3

This IS the advance notification and is why we're not discontinuing hosting a websockets enabled cluster of steemd's (wss://steemd.steemit.com) - at least not yet. We want to give everyone fair warning and a chance to update their libraries before discontinuing this service. It's never our intention to leave behind 3rd party developers. If you need help updating your applications or
steem library feel free to reach out to me directly on steemit.chat and I'll do my best to answer any questions you may have. This will be a transport change, not an API change - anything that worked over websockets to steemd will work over http/jsonrpc, generally with fairly minimal adjustments. We made a commitment earlier this year to communicate as much as and as far in advance as possible for any API changes or anything else that could effect third party developers. We will continue to notify everyone about any upcoming changes in advance. Steem on.

Thanks for taking the time @justinw - Yeah, as I said, this is the first time I see an announcement early enough and I love it. If you keep doing this for the future and especially for API changes I am more than glad to hear that <3

Regarding the switch to HTTP I also agree that it is not the most complex task :D

Steem on! :)

Will there be documentation/tutorials if we want to add Jussi in front of our own full nodes? Are their drawbacks? Was the transaction broadcast errors, account not found, and all the other issues the result of Jussi?

As we have availability to do so we will expand the existing documentation for jussi as well as any other services that are lacking full documentation.

Excellent! Thank you so much for keeping us informed on what's being done to improve the performance of this site we love so much. I'm already starting to see improvements. Things are actually working as expected again!

Loading...

I like to read the dev blog to keep up to date, although it’s in very general terms since most of this goes over my head... But...
Whatever is going on, to me, Steemit seems much more stable and responsive this evening. And as they say in the tech world, “The proof is in the pudding.” (Just kidding. No one says that in the tech industry, or anywhere else probably... but if I hit “post” and this comment sails right through I’m going to celebrate with some pudding...)

I hope you have plenty of pudding.

"The proof is in the pudding", I'll remember that.

Ahem: "the proof of the pudding is in the eating."

Shortening it the way people have, it sounds like "look for the engagement ring or other prize, it's inside the pudding!" :)

Thanks for the updates. Good to know that devs are working to make the application better!

What about the efficiency of web sockets vs thousands of individual https connections? I'm sure caching will add a lot of efficiencies but a lot is lost by dropping sockets.

When considering millions of connections spread across many servers, short-lived https connections are much easier to load balance and plan for than long-lived websockets. Websockets certainly have their advantages, but in this case https is much more appropriate, and also easier for 3rd party developers to pick up and use.

https connections are exactly the same as wss connections, except they're "upgraded" https connections. Also, the fact they are now using keep-alive would negate your point that they're extracting some benefit by using "short-lived https connections".

Except, they do not scale well. Go try to load balance millions of websocket connections and see how that goes :)

Exactly.
We have difficulties with performance already. This approach will only worsen the situation.

Loading...

Very good news. I can imagine a scenario where 3rd party developers utilize the new api to bring a number of innovative personal and business services to market. This will in turn help to broaden the appeal of Steem blockchain technology.

Coin Marketplace

STEEM 0.29
TRX 0.12
JST 0.032
BTC 63867.81
ETH 3135.89
USDT 1.00
SBD 3.84