WebSockets提供了一个双向全双工通信通道,它通过一个TCP/IP套接字连接在HTTP上运行。
Http被认为是单向的并且比websockets慢,所以这意味着Web套接字在Http上运行是什么意思?
在node.js中,我已经看到首先创建了一个http服务器,然后socket.io在该服务器上开始打包业务。
这是唯一的工作方式吗?为什么要这么做?
发布于 2021-02-24 08:37:13
使用"over“这个词是个错误。Websockets不通过HTTP操作。不过,这篇文章后来确实正确地解释了升级分离。
https://www.rfc-editor.org/rfc/rfc6455#section-1.7
WebSocket协议是一种独立的基于TCP的协议.它与HTTP的唯一关系是,HTTP服务器将其握手解释为升级请求。
socket.io库可以通过多个传输进行双向消息传递,websockets就是其中之一。它还支持HTTP长轮询,如果websocket连接不可能使用该轮询。
Socket.IO不是WebSocket实现。尽管Socket.IO确实在可能的情况下使用WebSocket作为传输,但它为每个数据包添加了额外的元数据。这就是为什么WebSocket客户端不能成功地连接到Socket.IO服务器,而Socket.IO客户端也不能连接到普通的WebSocket服务器。
Socket.io还设置了中间件,用于为客户端交付Javascript内容,并在猪背到http服务器时处理长轮询请求。这使得使用起来更容易,并且意味着不需要管理静态Javascript依赖项。
https://stackoverflow.com/questions/66344575
复制相似问题