有没有很好的标准方法通过Websocket模拟Req / Res?

时间:2018-11-01 23:23:13

标签: node.js websocket

我正在完全通过websocket构建我的应用程序。虽然我看到了能够将数据发送到客户端而无需客户端向我请求数据的好处。 req / res交互类型仍然有好处,因为您可以将所有逻辑放在一起。

例如:

进行注册。您发送数据,如果出现问题,服务器将发送OK或ERROR。 就在这三个事件! DataFromClient,RegistrationFailed,RegistrationSuccess。但是使用REST,我可以发出一个POST请求并处理一个函数中的其他问题。

创建一个允许您推送通知+ Req / Res交互类型的库并不难。如果可以像快速路由一样定义路由,那就更好了。

1 个答案:

答案 0 :(得分:0)

没有使用WebSocket实现请求/响应的“标准”方法。它不是webSocket标准的一部分。当然可以做到这一点(有关更多信息,请参见下文),但是没有“标准”的实现方法。

基于webSocket构建的socket.io库在其发送的任何消息中都内置了一个响应选项。

发件人执行以下操作:

socket.emit("msgName", someData, function(data) {
    // data is the "response" to sending this message
    console.log(data);
});

希望收到响应的邮件的收件人执行以下操作以导致发送响应:

socket.on("msgName", (someData, fn) => {
   // send response
   fn(someOtherData);
});

您可以在webSocket中实现自己的响应方案。您必须为每个请求在数据格式中添加一个唯一ID,以便您可以将相同的唯一ID发送回响应中,以便接收方知道哪个响应属于哪个请求。