WebSockets 和 Socket.io 有啥区别?

Posted

技术标签:

【中文标题】WebSockets 和 Socket.io 有啥区别?【英文标题】:What is difference between WebSockets and Socket.io?WebSockets 和 Socket.io 有什么区别? 【发布时间】:2018-06-12 01:36:34 【问题描述】:

场景:我是 javascript 新手(有 C/C++/Java 经验),并且正在使用 NodeJS 服务器处理 React UI,其中服务器将在特定时间间隔获取显示数据的更新(说 5 秒)。服务器应该将数据推送到 React UI 以快速更新显示的数据。

竞争者:我遇到了 2 个 JS 库 Websockets(lib 是 websocket 的正确术语吗?)和 Socket.io 来实现这一目标。对我来说,它们看起来都一样。

我谷歌了吗?:是的,但是由于我对 JS 缺乏了解,我无法理解其中的区别。

问题:这2个库(libs?)有什么区别,我该如何决定哪一个更适合这里?

【问题讨论】:

你能解释一下为什么它跑题了吗? 你说的这个“Websockets”库是什么?这是对 VanillaJS 的扩展吗? Web Sockets 不是一个库,它是浏览器功能的规范,is implemented 在所有最新的主流桌面浏览器(和许多移动浏览器)中都有。 Websocket是几乎所有浏览器都支持的普通Javascript API,Socket.io是内部使用Websocket API的JS库 @Tingya:我知道。我的评论不是认真的,只是个玩笑。 【参考方案1】:

场景:我是 JavaScript 新手(有 C/C++/Java 经验),并且正在使用 NodeJS 服务器处理 React UI,其中服务器将以特定间隔(比如 5 秒)获取显示数据的更新。服务器应该将数据推送到 React UI 以尽快更新显示的数据。

这就是我的做法。

竞争者:我遇到了 2 个 JS 库 Websockets(lib 是 websocket 的正确术语吗?)和 Socket.io 来实现这一点。对我来说,它们看起来都一样。

简而言之,我知道服务器和客户端之间有两种不同的通信方式:WEBSOCKET 和 SERVER-SENT EVENTS (SSE)。它们略有不同,因此强烈建议 Google 使用这两个选项来找出更适合您的选项。

Socket.io 本质上是一个帮助创建/管理 websocket 的库。想象一下,当您可以自己用 C 编写系统时,它就是您的 .NET 框架。

我谷歌了吗?:是的,但由于我对 JS 缺乏了解,我无法理解其中的区别。

这里有一些可以帮助你的链接:

上海证券交易所:

    https://www.w3schools.com/html/html5_serversentevents.asp

    https://developer.mozilla.org/en-US/docs/Web/API/Server-sent_events/Using_server-sent_events

WEBSOCKET

    https://www.html5rocks.com/en/tutorials/websockets/basics/

    https://developer.mozilla.org/en-US/docs/Web/API/WebSockets_API/Writing_WebSocket_client_applications

比较

    https://www.google.com.au/search?safe=off&ei=MmNLWuGkLsHQ0AS87J_4Bw&q=websocket+vs+sse&oq=websocket+vs+sse

问题:你能帮我理解一下 这 2 个库(库?)并帮助我确定哪个更合适 在这里?

正如我之前提到的,从技术上讲,您只提到了一个包库 (socket.io),它通过其 API 管理 websocket。我假设另一种方法是使用本机 JavaScript 方法手动完成。这取决于您选择哪一个,您一定会发现两者各有利弊。

【讨论】:

谢谢,正是我要找的答案! 别担心,我知道从任何语言开始都很难。一切顺利。 请不要把所有的文字都加粗,没有什么好的理由。将网站的字体选择留给网站。 只是因为它是题外话,我相信这并不意味着它不值得回答。 当然,但不是在 Stack Overflow,因为它不是本网站的主题。

以上是关于WebSockets 和 Socket.io 有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章

使用 node.js、websockets 和 socket.io 创建实时聊天

带有 Node.js 和 socket.io 的 WebSockets

Socket.io 1.x:只使用 WebSockets?

WebSockets(Socket.io)与heroku自动断开连接,我应该扩展吗?

从 socket.io 迁移到原始 websockets?

使用 HTTP keep-alive 和 websockets (socket.io) 时的 TCP 连接数