【问题标题】:When to use socket.io ? and when to use simple Http calls? [duplicate]何时使用 socket.io ?以及何时使用简单的 Http 调用? [复制]
【发布时间】:2017-08-31 22:15:07
【问题描述】:

我们正在用 Angular2 / Node with Express 和 Mongo + MySql 开发一个项目 它的应用程序非常大,但不需要任何功能,例如实时通知或聊天

应用程序具有简单的 CRUD 操作并获取大量数据,所以我的问题是

使用 socket.io 而不是简单的 http 调用它仍然很好/有好处吗?

据我了解 socket.io ,它只与服务器建立一次连接(握手),并且 在我们的例子中,每次我尝试调用 api 时它都会握手?

那么使用socket.io 进行CRUD 操作的普通应用程序有什么好处吗? 会节省时间吗? 有速度差异吗?

哪种方式更好实施?

我已经通过了:When to use socket.io and when to use ajax

但没有得到我想要的。

如果必须选择黑白简单的http调用和socket.io?哪一个更好 ?对于简单的 CRUD 操作,没有任何动态,不需要任何实时通知?在简单的情况下,哪个性能更好,速度更好?

如果有任何性能图表或按时间/握手/请求-响应的黑白比较会更好。

有人可以帮我解决这个问题吗? 提前致谢。

【问题讨论】:

  • AFAIK 如果您不打算进行跨域请求,一切都将在本地应用程序上,那么是的,socket.io 在性能方面更好。但正如那个答案所说,旧的/移动平台可能是使用 websockets 的问题。
  • @jfriend00,我没有你在回答中解释的那种系统,我的系统很简单,所以我想要回答。
  • 这三个答案中都讨论了所有内容。这里没有绝对的。如果您不需要服务器推送并且没有从客户端到服务器执行大量请求,那么 Ajax 可能更容易实现服务器端并且性能不会有明显的不同。一般来说,除非你有有意义的理由使用 socket.io,否则你会使用 HTTP。你没有解释任何有意义的理由使用 socket.io。
  • 您是否阅读了我提供给您的所有三个参考问题?你不明白他们呢?我在这个问题中没有看到任何新的东西,这些新问题已经在 stackoverflow 上可能有 15 个问题中讨论过了(并且我阅读了过去 4 年在这里发布的每个 webSocket/socket.io 问题)。

标签: node.js angular socket.io


【解决方案1】:

何时使用套接字 i.o

  • 当您构建实时应用程序时,例如群聊室、视频会议、多人游戏等。
  • 如果您希望服务器自己推送数据而不从客户端调用。

何时使用 https

  • 简单地将数据发布到服务器
  • 不需要在客户端进行实时更新。即,如果您想要 CRUD,则不必使用套接字。

Here's 通过已打开的 webSocket 发送价格变化与进行 REST 调用所涉及的网络操作的比较。

正如您提到的,您需要任何实时通知和聊天等,我建议使用简单的ajax,因为code 很容易。

那么使用 CRUD 操作的普通应用程序使用 socket.io 有什么好处吗?会节省时间吗?有速度差异吗?

你可以看this比较ajax和sockets i.o的优秀文章

【讨论】:

  • 您可以使用 websockets 向服务器发出简单的 http 请求。 OP 正在询问为什么我们应该通过套接字使用 http 请求来发出这个简单的请求。
  • 是的,但是建议通过 websockets 使用 https 请求吗?
  • 我不知道您是否有任何资料/测试可以证明这一点?
  • 我没有,但是简单的套接字 io 使用持久连接,所以它会一直消耗资源,如果您不想实时更新客户端,那么为什么要使用套接字 io简单的ajax?如果我把事情搞砸了,请纠正我。
  • 这就是问题所在。如果由于其他原因(通知内容)已经打开了 websocket 连接,那么在我看来,使用 http 请求是多余的(在本地应用程序中)。另一个问题是“套接字在不活动时需要很少的资源”
猜你喜欢
  • 2018-05-29
  • 2011-05-04
  • 2016-04-30
  • 2020-06-30
  • 2014-06-20
  • 2018-06-21
  • 2014-11-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多