Comments (5)
No, but it is something I want to build at some stage.
from halibut.
We'll remove this in the next major
from halibut.
@droyad 👌
Is there actually an easy way to do this conceptually, without re-implementing the service on an in-between point?
For example have a lot of workers (cough azure functions for example) route the Halibut connection via a central point for all clients/servers to connect through.
from halibut.
@droyad We might be able to put some effort into this.
What line are you thinking of going with this? Would be nice to contribute in a way that's useful for everyone.
From our pov it'd be ideal to separate out all the work to create the invocations from the actual routing/client connection handling. This would allow a lot of vertical scaling options (dynamic workers a-la azure functions/lambda functions or even simply scaled VM's etc).
Ideally we'd even get the ability to get clients connecting to localized servers (EU, US, Asia) to improve client connectivity and our workers to connect to a central gateway that routes it to those localized gateways which then routes it to the appropriate client.
from halibut.
As my colleague @janpieterz said before, we're very keen on having routing functionality implemented into Halibut for various reasons.
We've started work towards this and would love to have your feedback about simple changes we've made that could enable routing functionality. Our goal is to implement this in a way that would suit everyone so that we can contribute those changes back into Halibut.
POC can be found here: https://github.com/willemda/Halibut/tree/feature/routing/source (Run SampleClient, SampleProxyServer & SampleServer)
Changes can be summarized by this single file changes (HalibutRuntime.cs) :
willemda@018f2ce#diff-e9557d3eda420c227f8e7efdeac71162
- When sending a message, we make use of the routeTable dictionary to check if we need to route the message through another endpoint.
- When receiving a message, we check if the destination of the message matches the current endpoint, if not, we try and send this message over (can be routed again potentially). If yes, we process as usual
from halibut.
Related Issues (20)
- Unhandled exception logged
- [Feature] Routing HOT 1
- Strange issue when using WebSockets HOT 3
- Exceptions in the DataStream writer causes the receiver to block with 100% CPU load.
- PR #144 to add buffered stream appears to cause timeout issues.
- messageEnvelope is null HOT 1
- Support WebSockets on .NET Core HOT 1
- Exception with message "The archive entry was compressed using an unsupported compression method." is raised occasionally.
- [Question] TcpListener report progress
- HalibutRuntime extension/inheritance
- Update package at nuget? HOT 1
- Dependency Injection support? HOT 1
- Any plans for Microsoft Generic Host support (HostBuilder etc) HOT 10
- External management of Trust HOT 2
- Strange performance issue HOT 1
- Notify when unauthorized client connects. HOT 1
- Listening Server leaks TCP connections
- Identifying a client HOT 5
- Halibut can not create TcpClient when IPv6 is disabled HOT 2
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 halibut.