如何在API网关后面隐藏多个WebSocket服务?

如何在API网关后面隐藏多个WebSocket服务?,websocket,architecture,microservices,real-time,api-gateway,Websocket,Architecture,Microservices,Real Time,Api Gateway,我正在从事一个项目,该项目在一个API网关后面有多个微服务,其中一些微服务公开WebSockets API WebApp需要能够与这些api交互 这些WebSocket API可以使用具有自己协议的框架构建,可以使用socket.io,也可以不使用socket.io等等 此反射的主要目标是能够在WebSockets API实现上扩展并保持灵活性 我考虑了两种解决方案: 第一个是简单地在网关上代理请求,webapp必须为每个微服务打开一个websocket,这在我看来像是一个设计缺陷 另一个是

我正在从事一个项目,该项目在一个API网关后面有多个微服务,其中一些微服务公开WebSockets API

WebApp需要能够与这些api交互

这些WebSocket API可以使用具有自己协议的框架构建,可以使用socket.io,也可以不使用socket.io等等

此反射的主要目标是能够在WebSockets API实现上扩展并保持灵活性

我考虑了两种解决方案:

第一个是简单地在网关上代理请求,webapp必须为每个微服务打开一个websocket,这在我看来像是一个设计缺陷

另一个是创建一个通知服务,它将是一个WebSocket服务器,它将保持与用户的传出连接,并能够根据自定义协议桥接传入消息和传出消息。缺点是我需要实现一个发布/订阅系统或找到一个解决方案。我没有深入研究它,但它看起来像是一个大量的工作和自制的解决方案,我不是它的粉丝


在生产中公开了这样的体系结构和WebSocket之后,我没有找到提供反馈的文章,我希望在这里找到一些。

我同意你的观点,简单的代理解决方案似乎是不够的,因为它向客户机公开了内部接口。我发现了两篇文章,我认为它们解决了您的问题:

两者都谈到了您在问题中已经提到的问题:协议转换是此体系结构的一个优势,因为它将外部API与内部使用的协议分离。另一方面,由于要维护另一个组件而增加的复杂性被认为是一个缺点

第二篇文章还建议使用一些现有的库namley Netty、Spring Reactor和NodeJ来实现API网关,因此您可能需要花一些时间为您的项目评估这些库