首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Socket.io应用..。我应该使用发出或使用常规的http请求并使用express处理它吗?

问Socket.io应用..。我应该使用发出或使用常规的http请求并使用express处理它吗?
EN

Stack Overflow用户
提问于 2020-02-16 18:03:26
回答 1查看 542关注 0票数 2

我正在创建Socket.io应用程序,有时需要从数据库中检索信息。我很难弄清楚这些请求是应该使用socket.io发送和处理,还是应该像普通的http请求那样发送,然后在服务器中使用Express进行处理。

我可以使用socket.emit(“my”),然后在服务器中使用socket.on("my-event", () =>{... make request to the database...})处理它,然后在从数据库获得结果之后,我可以发出另一个事件,使用socket.emit("result-from-the-DB", dataFromDB)将结果发送到客户机。

我知道你可能在想“你不需要Socket.io”,但应用程序最重要的部分将需要它,因为它的功能非常像一个聊天应用。例如,假设用户在这个应用程序中单击“查看我的配置文件”。是使用socket.io (使用上面描述的步骤)还是仅仅使用常规的http请求发送到服务器的请求?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-02-16 18:20:00

Socket.io应用程序…我应该使用发出或使用常规的http请求并使用express处理它吗?

没有完全正确的答案。老实说,无论哪种方式,你都可以让它运转得很好。以下是每种方法的一些优点:

通过http请求发送的优点:

  1. http是一种请求/响应协议。如果您正在发送一个请求,并且期望对一个特定的请求作出响应,那么http的设计要好一些。socket.io对特定的“请求”并没有真正的“响应”。您可以通过发回消息或使用确认回调来模拟这种情况。如果您设想此API/功能的任何其他公共用途或在socket.io应用程序之外的任何用途,则http更多地是合适的公共API。如果您需要发送大量数据(如上传文件),那么已经为http.
  2. socket.io错误处理构建的更成熟的解决方案更多是在全局级别,而不是针对特定消息。例如,没有办法专门侦听发送特定消息时是否有错误。如果socket.io库遇到套接字问题,它将关闭套接字并尝试重新连接。有时这是一个特性,有时这是一个障碍,以了解您的数据是否真的得到了那里。无论您的请求是否已发送,http请求都会给您提供清晰和直接的反馈。
  3. 如果您在处理此消息时所做的与您使用socket.io所做的其他事情无关,则使用http处理它可能会更干净(从模块设计的角度来看),这样您就不必将与其他内容无关的代码混入socket.io模块中。

通过socket.io消息发送的优势:

  1. 已经激活了socket.io连接,使用socket.io向服务器发送一条小消息的开销要低得多。因此,特别是当您以这种方式发送大量小消息时,efficient.
  2. If可能会大大增加socket.io --在处理此请求时,socket.io特性(如名称空间和空间)有任何好处,然后使用socket.io.
  3. If在服务器上处理它可能更容易--您发送的消息与您在服务器上使用socket.io所做的其他事情直接相关,那么在socket.io模块中处理该请求可能会更干净(从模块设计的角度来看)。
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60251519

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档