节点(或其他语言)中是否有用于基于网络的应用程序的 'middleware' 库?

Are there 'middleware' libs for network based apps in node (or other languages)?

我想在节点中写几个 tcp servers/clients。我正在尝试弄清楚 node.js 生态系统提供了什么来简化此类开发。我正在考虑类似于 (java's) netty 的部分内容。该项目提供了一种实现协议的方法,可以将其插入网络代码管道或从实际的 tcp 连接代码中取出以进行独立测试。

Node 的 http 框架通常提供一个中间件层。用户可以编写拦截请求或响应的代码来隔离功能位,因此实际的 request/response 界面不会发生太大变化。这会导致此类代码的第 3 方提供程序进行日志记录、身份验证等。

底层网络代码是否存在类似的东西? (由于我测试了一些想法,如果有人知道其他 non-java/c++/c# 语言确实提供了这样的 features/libraries,我也想阅读它们)

不确定是否有那么多现成的东西可用,但对于实际的中间件模式本身,有 ware 它是用于任何 JavaScript 上下文(节点、浏览器)的通用中间件) 且未耦合到 HTTP。

既然你标记了Elixir,我就咬人。

虽然 Elixir 有一个很好的框架来为 HTTP 客户端构建这样的东西(插件),但我考虑的一个选项是使用 vegurranch_proxy_protocol 库(由 Heroku 用 Erlang 编写,但在 Elixir 中很容易使用),vegur 提供了一个可插入的中间件层,可以轻松地进行隔离测试。我目前在我公司使用它作为代理层。

即使没有这些,使用 ranch 构建这样的应用程序也非常简单。 Ranch 从套接字处理 listening/accepting/reading/writing,你可以在需要的地方插入一个可插入的管道,使用行为强制执行(Erlang/Elixir 相当于一个接口)。

这些类型的应用程序几乎是 Erlang 和 Elixir 的最佳选择,如果您熟悉或对其中任何一个感兴趣,我强烈推荐它。