何时使用 socket.io ?以及何时使用简单的 Http 调用? [复制]
Posted
技术标签:
【中文标题】何时使用 socket.io ?以及何时使用简单的 Http 调用? [复制]【英文标题】:When to use socket.io ? and when to use simple Http calls? [duplicate] 【发布时间】: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 的问题。 其他参考:Ajax vs. socket.io 和 Ajax vs Socket.IO, pros and cons。 @jfriend00,我没有你在回答中解释的那种系统,我的系统很简单,所以我想要回答。 这三个答案中都讨论了所有内容。这里没有绝对的。如果您不需要服务器推送并且没有从客户端到服务器执行大量请求,那么 Ajax 可能更容易实现服务器端并且性能不会有明显的不同。一般来说,除非你有有意义的理由使用 socket.io,否则你会使用 HTTP。你没有解释任何有意义的理由使用 socket.io。 您是否阅读了我提供给您的所有三个参考问题?你不明白他们呢?我在这个问题中没有看到任何新的东西,这些新问题已经在 *** 上可能有 15 个问题中讨论过了(并且我阅读了过去 4 年在这里发布的每个 webSocket/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 请求是多余的(在本地应用程序中)。另一个问题是“套接字在不活动时需要很少的资源”以上是关于何时使用 socket.io ?以及何时使用简单的 Http 调用? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
我应该何时使用 IEnumerable 以及何时使用 IQueryable?
什么是 Request.InputStream 以及何时使用它?