首页 > 解决方案 > 是否有通过 Websocket 模拟 Req/Res 的良好标准方法?

问题描述

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

前任:

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

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

标签: node.jswebsocket

解决方案


没有使用 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 中实现自己的响应方案。您必须为每个请求添加一个 uniqueID 到您的数据格式,这样您就可以在响应中发回相同的 uniqueID,以便接收者知道哪个响应属于哪个请求。


推荐阅读