Skip to content
This repository has been archived by the owner on Aug 28, 2022. It is now read-only.

websocket queue #17

Open
gedw99 opened this issue Jan 19, 2021 · 5 comments
Open

websocket queue #17

gedw99 opened this issue Jan 19, 2021 · 5 comments

Comments

@gedw99
Copy link

gedw99 commented Jan 19, 2021

This project is retty interesting.

You might want to look into adding NATS to this system:
Web sockets for NATS and soon Nats Jetstream is happening. See:
https://github.com/nats-io/nats.ws

It would make it easier to have 100's of distributed golang servers in sync with browser clients.

Not sure if you know NATS ?

The CLI now has Jetstream included ..

Let me know what you think...

@brendonmatos
Copy link
Owner

Very interested!
Scaling things is certainly one of the most difficult things to do, what is your experience with the Nats service?
I am thinking lately about implementing an adapter concept for interoperability with other types of communication and that (NATS) would be a good starting point

@c-nv-s
Copy link

c-nv-s commented Jan 24, 2021

I was wondering how different this project is from https://github.com/jfyne/live by @jfyne
could you outline any key differences for me?

@brendonmatos
Copy link
Owner

I was wondering how different this project is from https://github.com/jfyne/live by @jfyne
could you outline any key differences for me?

Not many, but in my view some are relevant.
For me it is a very important the possibility of using components (although not mature in golive) there is this possibility since the first versions. I was also very concerned about keeping everything very simple, easy enough for any JS/front-end programmer to pick up and be productive without understanding the entire Go system.

@c-nv-s
Copy link

c-nv-s commented Jan 26, 2021

ok cool. thanks.

@gedw99
Copy link
Author

gedw99 commented Jan 26, 2021

Very interested!
Scaling things is certainly one of the most difficult things to do, what is your experience with the Nats service?
I am thinking lately about implementing an adapter concept for interoperability with other types of communication and that (NATS) would be a good starting point

Nats is really easy to integrate and their tooling is high quality.

We wrapped it with a GRPC and GRPC-web API so that under the API we can use NATS and other bits without breaking the clients or polluting them . GRPC-web under the Hof provides the web socket for you using the improbable golang lib. The client code needs to be GRPC aware though so you would need to make slight changes to you JavaScript code just so you know.

https://github.com/improbable-eng/grpc-web

NATS can be scaled out itself but it’s database for durability needs PostgreSQL . So we are using Liftbridge as a GRPC wrapper that scales it out to be just like Kafka with no DB needed because it’s a distributed WAL design.
https://github.com/liftbridge-io/liftbridge

Nats jetstream might replace the need for Liftbridge and in the next few weeks we will know when the NATS team bring out V2 officially. A lot of devs are waiting too see which way they go.

https://github.com/nats-io/jetstream

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants