我一直在考虑一个涉及到的设计:
- 客户端向端点发出 POST 请求
- 然后该路由(从返回我字符串化的请求对象的构造函数)发布到 redis 通道。例如
( {request: String, transid: String, data: Object } )
- 侦听该通道的另一台服务器解析 JSON -> 从 obj 切换请求密钥
- 是否具有验证凭据等功能;
- 调用一个类,该类返回一个预制的响应对象,该对象转换为 str,并通过同一(或另一个通道)发送回正在异步侦听等待的路由处理程序(通过该通道发送原始请求)(在这种情况下,禁食。)例如
( { "transid": "1234-Abcd-5678-abcde", "state": Boolean, data: <data> } )
时间线
路由处理程序向 redis 侦听器发出 Pub 请求:
( {request: "auth", transid: "1234-Abcd-5678-abcde", data: { email: "test@test.com", "password": "pass" } )
另一台服务器上的订阅侦听器执行内部凭据验证
发布回 redis 频道
( {transid: "1234-Abcd-5678-abcde", state: false, data: { error: "Incorrect" } } )
路由处理程序使用库特定方法回复客户端,即 request.send(200)
我的问题是我不完全了解如何在上述时间线中实现第 4 步的结果;即是否有可能在路由处理程序中几乎等待消息?我已经非常接近了,但是当我设计能够扩展的东西时,我质疑这是否是一种实用的方法。(用户将详细信息发送到 /endpoint,/endpoint 路由处理程序将 json 消息发布到通道,外部服务器侦听解析消息并将其发送到 switch 语句,即 [switch(data.request)],该语句调用执行 DB 的函数操作,然后使用类构造函数生成一个对象,通过 redis 通道发送回路由处理程序,该处理程序将等待回复,然后回复给客户端。)
请问有人对此有意见吗?