Comments (1)
Tener un socket abierto en el servidor por cada nodo no escala bien. Una buena alternativa puede ser utilizar el estandar Server-sent events [1] en el cual un cliente se subscribe a un servicio de notificaciones del servidor.
Para un cliente web, la implementación es trivial [1,2] pero para el caso de clientes nativos no hay muchos recursos disponibles a excepción de en Java [3,4] y más concretamente Android [5].
Sin embargo, hay un proyecto interesante de código abierto llamado Plasma [6] que actua como middleware entre un servidor que publica mensajes y clientes que los leen. El servidor publica mensajes enviando mediante gRPC dicho mensaje a Plasma y este lo reenvía a los clientes subscritos. El cliente puede subscribirse a un evento del servidor mediante gRPC si es un cliente nativo, o de la forma sencilla si es un cliente web [2].
gRPC esta disponible para distintos lenguajes nativos [7]. Lo que nos permite usar esta forma de comunicación tambien en clientes nativos.
[1] https://html.spec.whatwg.org/multipage/server-sent-events.html
[2] https://developer.mozilla.org/en-US/docs/Web/API/Server-sent_events/Using_server-sent_events
[3] https://golb.hplar.ch/2018/02/Access-Server-Sent-Events-from-Java.html
[4] https://github.com/launchdarkly/okhttp-eventsource
[5] https://github.com/tylerjroach/eventsource-android
[6] https://github.com/openfresh/plasma
[7] https://grpc.io/docs/tutorials/basic/c.html
from gocey.
Related Issues (20)
- Continuous Integration HOT 1
- As an examiner, I want to know the motivations of the work so that I can evaluate it properly. HOT 3
- As a non-tech-savvy user, I want to start contributing to a problem from my browser so that I do not need to install anything on my computer. HOT 1
- As a non-tech-savvy user, I want to be able to select which project I want to contribute to so that I can collaborate in something I am interested in. HOT 4
- As a researcher, I want to upload problems so that users can collaborate to it.
- As a tech-savvy user, I want to contribute to the problem by running code natively so that I can achieve better performance. HOT 1
- As a researcher, I want to communicate browser-based nodes and native nodes so that both can work together towards a solution.. HOT 1
- As a researcher, I want an interface for native nodes comunications so that using the distributed system is easier. HOT 1
- As an Administrator, I want to get metrics from the execution of problems so that I can assess how the system is performing. HOT 3
- As an Administrator, I want to run a demo problem so that I can test the platform. HOT 2
- As a researcher, I want an interface for browser-based nodes comunications so that using the distributed system is easier.
- As a possible contributor, I want to have all functions tested so that my own contributions can be checked before being added. HOT 1
- You should also test, not only train HOT 1
- As a deployer, I want to deploy the system in a new machine so that I can run it.
- Representación de soluciones HOT 6
- Cloud based system HOT 1
- Browser based UI HOT 1
- Distributed EA HOT 2
- Problems to test the platform HOT 1
- As a researcher, I want different systems to communicate between each others with a common solution representation so that all of them can work with it and share it. HOT 3
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from gocey.