socketio必须用在node中吗

socketio必须用在node中;socketio是nodejs的一个库,利用nodejs的函数封装了一些功能,并且依赖于nodejs的一些api,所以只能在nodejs中使用,socketio也是在客户端和服务端之间建立的双向通信数据交换技术,底层使用EngineIO。

socketio必须用在node中吗

本文操作环境:Windows10系统、nodejs 16版、Dell G3电脑。

socketio必须用在node中

socketio是nodejs的一个库,相当于别人利用nodejs的函数封装了一些功能给你使用,依赖与nodejs的一些api,所以只能在nodejs下用。

SocketIO是在客户端和服务端之间建立的双向通信数据交换技术,底层使用EngineIO。SocketIO的的客户端使用Engine.IO-Client,服务端使用Engine.IO实现。

扩展知识

SocketIO如何工作

当一个浏览器尝试建立SocketIO时,SocketIO首先使用xhr-polling创建一个长轮询。长轮询一旦建立,它将升级为WebSocket连接。

SocketIO底层是使用EngineIO库实现的,这个库使用WebSocket和XMLHttprequest封装了一套自己的Socket协议(暂时叫 EIO Socket)。一个完整的 EIO Socket 包括多个 XHR 和 WebSocket 连接.

客户端

EIO Socket 通过一个 XHR (XMLHttprequest) 握手。前端发送一个 XHR,告诉服务端我要开始 XHR 长轮询了。后端返回的数据里面包括一个 open 标志(数字 0 表示), 以及sid 和 upgrades 字段,ping时间间隔,ping超时时间。

0{“sid”: “8b7ab1ae-fbcf-4d23-8192-3c14a2a90721”,“upgrades”: [“websocket”],“pingInterval”: 10000,“pingTimeout”: 60000}

登录后复制

sid 是本次 EIO Socket 的会话 ID,因为一次 EIO Socket 包含了多个请求,而后端又会同时连接多个 EIO Socket,sid 的作用就相当于 SESSION ID。

另一个字段 upgrades,正常情况下是 [‘websocket’],表示可以把连接方式从长轮询升级到 WebSocket。

前端在发送第一个 XHR 的时候就开始了 XHR 长轮询,这个时候如果有收发数据的需求,是通过长轮询实现的。所谓长轮询,是指前端发送一个 request,服务端会等到有数据需要返回时再 response. 前端收到 response 后马上发送下一次 request。这样就可以实现双向通信。

前端收到握手的 upgrades 后,EIO 会检测浏览器是否支持 WebSocket,如果支持,就会启动一个 WebSocket 连接,然后通过这个 WebSocket 往服务器发一条内容为 probe, 类型为 ping 的数据。如果这时服务器返回了内容为 probe, 类型为 pong 的数据,前端就会把前面建立的 HTTP 长轮询停掉,后面只使用 WebSocket 通道进行收发数据

EIO Socket 生命周期内,会间隔一段时间 ping – pong 一次,用来测试网络是否正常。

15.png

这是 WebSocket 帧的结构,绿色是发送,白色是接收。前面的数字是数据包类型,2 是 ping, 3 是 pong, 42是 message

推荐学习:《nodejs视频教程》

以上就是socketio必须用在node中吗的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2928037.html

(0)
上一篇 2025年3月11日 19:31:48
下一篇 2025年3月11日 19:31:56

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • node能降级吗

    node版本不能直接降级,但是可以将高版本卸载掉,利用nvm版本控制器重新安装较低版本的node进行降级。降级方法:1、利用“npm instlal -g n”全局安装n模块;2、利用“n rm 版本”卸载指定版本;3、安装nvm后利用“n…

    2025年3月11日
    000
  • node代码都是开源的吗

    node代码是开源的;“Node.js”是一个跨平台的开源运行环境,是基于“Chrome V8”引擎的JavaScript运行环境,用于在浏览器外部执行JavaScript代码,node也是基于“Chrome JavaScript”运行时构…

    2025年3月11日
    200
  • node.js是软件吗

    “node.js”不是软件,是一个JavaScript运行环境;“node.js”是一个基于“Chrome V8”引擎的JavaScript运行环境,是使用一个事件驱动、非阻塞式“I/O”模型,让JavaScript运行在服务器端的开发平台…

    2025年3月11日
    200
  • node的express有什么用

    node的express可以方便、快速的创建Web网站的服务器或API接口的服务器;express还可以为不同URL路径中使用不同HTTP动词的请求编写处理程序,集成了“视图”渲染引擎,以便通过将数据插入模板来生成响应等等。 本文操作环境:…

    2025年3月11日
    200
  • vue底层是用node写的吗

    vue底层不是用node写的,而是基于JavaScript语言开发的;vue是一套用于构建用户界面的渐进式JavaScript框架,能够更好的组织与简化Web开发,而node是一个基于“Chrome V8”引擎的JavaScript运行环境…

    2025年3月11日
    200
  • node.js环境变量什么意思

    “node.js”环境变量指的是“node.js”运行环境中具有特定名字的对象,也即运行环境的参数;环境变量相当于给系统或用户应用程序设置的一些参数,在安装完node之后,可以在系统环境变量path里添加“G:Node.js”。 本文操作环…

    2025年3月11日 编程技术
    200
  • was启动node报错怎么办

    was启动node报错的解决办法:1、打开命令窗口;2、运行“bin/initOSGIcfg.sh”命令;3、重新运行“startNode.sh”命令即可。 本教程操作环境:linux7.3系统、node18.4.0版、Dell G3电脑。…

    2025年3月11日
    200
  • git为什么找不到node

    git找不到node可能是使用了husky,在检查规范的时候,执行的脚本找不到node,其解决办法:1、找到“.git”目录下的hooks文件夹,然后将其重命名;2、重新安装环境即可。 本教程操作环境:本教程操作环境:linux7.3系统、…

    2025年3月11日
    200
  • nvm 怎么删除node

    nvm删除node的方法:1、下载“nvm-setup.zip”并将其安装在C盘;2、配置环境变量,并通过“nvm -v”命令查看版本号;3、使用“nvm install”命令安装node;4、通过“nvm uninstall”命令删除已安…

    2025年3月11日 编程技术
    200
  • node 返回乱码怎么办

    node返回乱码的解决办法:1、打开相应的node模块文件;2、手动设置内容的编码格式,其修改代码为“res.setHeader(“Content-Type”, ‘text/html; charset=u…

    2025年3月11日
    200

发表回复

登录后才能评论