位置: IT常识 - 正文

【node进阶】在node.js中优雅的使用Socket.IO模块(node-)

编辑:rootadmin
【node进阶】在node.js中优雅的使用Socket.IO模块

推荐整理分享【node进阶】在node.js中优雅的使用Socket.IO模块(node-),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:node no,node num,node in,nodecideo,node num,node no,node 入门,node num,内容如对您有帮助,希望把文章链接给更多的朋友!

✅ 作者简介:一名普通本科大三的学生,致力于提高前端开发能力 ✨ 个人主页:前端小白在前进的主页 🔥 系列专栏 : node.js学习专栏 ⭐️ 个人社区 : 个人交流社区 🍀 学习格言: ☀️ 打不倒你的会使你更强!☀️

🔥前言

上篇文章中结合websokcet进行了简单的聊天小案例,但是我们可以发现使用ws模块来写代码的时候未免有一些繁琐,需要我们自己去设置type,使用socket.io后事件监听将会十分的简单便捷,很好的弥补了ws模块的缺陷。

📃目录Socket.IO的定义Socket.IO的优点node中安装Socket.IOnode中使用Socket.IOemiton在express中引入使用服务端客户端小结Socket.IO的定义

Socket.IO是一个WebSocket库,包括了客户端的js和服务器端的node.js,它的目标是构建可以在不同浏览器和移动设备上使用的实时应用。

Socket.IO将WebSocket、AJAX和其它的通信方式全部封装成了统一的通信接口,也就是说,我们在使用SocketIO时,不用担心兼容问题,底层会自动选用最佳的通信方式。

Socket.IO的优点socket.io封装了服务端和客户端,使用起来非常简单方便。socket.io支持跨平台,这就意味着你有了更多的选择,可以在自己喜欢的平台下开发实时应用。socket.io可以自定义事件发送到对端,对端可以是服务器,可以是客户端;使用emit发送,接收还是on。它会自动根据浏览器从WebSocket、AJAX长轮询、Iframe流等等各种方式中选择最佳的方式来实现网络实时应用,非常方便和人性化,而且支持的浏览器最低达IE5.5。如果不支持websocket,可以自动降级为轮询node中安装Socket.IO

打开终端,在终端中输入以下代码即可安装Socket.IO模块:

npm i socket.ionode中使用Socket.IO

emit 和 on 是最重要的两个api,分别对应 发送 和 监听 事件.

【node进阶】在node.js中优雅的使用Socket.IO模块(node-)

我们可以非常自由的在服务端定义并发送一个事件emit,然后在客户端监听 on,反过来也一样。

发送的内容格式也非常自由,既可以是基本数据类型 Number,String,Boolean 等,也可以是 Object,Array 类型,甚至还可以是函数。而用回调函数的方式则可以进行更便携的交互。

emit

socket.emit(eventName[, ...args]):发射(触发)一个事件

socket.emit('aaa','你好,前台')

在这里以服务端为例子:在服务端中通过socket.emit()方法创立一个事件(第一个参数:自定义事件)aaa,发送的信息(第二个参数) 你好,前台.

注意: 第二个参数可以传对象,因为在emit方法内部带有JSON.stringfy()方法,自动将对象转化为字符串。

on

socket.on(eventName, callback):监听一个 emit 发射的事件

socket.on('aaa',(msg)=>{console.log(msg)})

在这里以客户端为例,客户端监听服务端的事件aaa,随后通过回调函数的方式打印出aaa传过来的信息。

在express中引入使用服务端const server = require('http').createServer(app);const io = require('socket.io')(server);io.on('connection', socket => {console.log('恭喜你连接成功!')socket.on("message",(msg)=>{console.log(msg) //你好 后台//注意 : 这里的 io.emit() 是默认转发给全部客户端信息,所有客户端都可以收到io.emit("allMsg","广播 : 欢迎来到聊天室")})});server.listen(3000);

将server当作参数传入,目的在于说明io挂载的服务依旧是基于http的。 这里的代码表示,只要连接成功,就会打印连接成功的信息!

客户端<script src="/socket.io/socket.io.js"></script><script> const socket = io(); //默认连接服务端启动的本地端口地址 socket.emit("message","你好 后台") // 监听服务端的广播事件,接收广播的消息 socket.on("allMsg",(msg)=>{console.log(msg) //广播 : 欢迎来到聊天室 })</script>

在客户端需要单独引用socket.io.js文件,因为socket.io不是浏览器内置模块,需要单独引用,js文件内部代码 ==> socket.io.js内部代码,将这里的代码复制到自己创建的js文件中,然后在客户端中引用。 只要在客户端中出现const socket = io(),浏览器将会直接默认连接到客户端启动的本地服务地址。

小结

socket.io这个第三方模块相对来说,书写代码的时候更加的方便与高效,在ws模块中通过switch分支来进行对不同的聊天类型进行不同的方法呈现,而在socket.io模块中仅仅通过自定义事件就可以解决这个问题,并且socket.io可以在服务器断开后,当你再次进入客户端后可以自动连接,整体的表现优于ws模块。

下篇文章将会对群聊和私聊进行"socket.io化"升级!

👑书写不易,希望大家能够给予三连支持,期待我更好的文章哟👑

本文链接地址:https://www.jiuchutong.com/zhishi/298461.html 转载请保留说明!

上一篇:处理vue中的长按事件、点击事件、默认事件冲突(vue点击按钮显示对应的内容)

下一篇:前端经典面试题 | 吊打面试官系列 之 Vue2和Vue3的区别(前端经典面试题讲解)

  • vivox60第二个卡槽在哪里(vivos6第二张卡插哪里)

    vivox60第二个卡槽在哪里(vivos6第二张卡插哪里)

  • 水印相机可以改时间和日期吗(水印相机可以改地址吗)

    水印相机可以改时间和日期吗(水印相机可以改地址吗)

  • 苹果手机打游戏怎么设置消息免打扰(苹果手机打游戏时屏幕突然变暗)

    苹果手机打游戏怎么设置消息免打扰(苹果手机打游戏时屏幕突然变暗)

  • 装了sd卡为什么不能用(装了sd卡为什么不显示)

    装了sd卡为什么不能用(装了sd卡为什么不显示)

  • 语音怎么转发给别人(语音转发怎么转发微信)

    语音怎么转发给别人(语音转发怎么转发微信)

  • 抖音退出登录会怎样(抖音退出登录会怎么样)

    抖音退出登录会怎样(抖音退出登录会怎么样)

  • 骆驼1s和2s有什么区别(骆驼1s55d23)

    骆驼1s和2s有什么区别(骆驼1s55d23)

  • 淘宝跨境电商平台叫什么(淘宝跨境电商平台哪个最好最可靠)

    淘宝跨境电商平台叫什么(淘宝跨境电商平台哪个最好最可靠)

  • 怎么查找淘宝历史订单(怎么查找淘宝历史评价)

    怎么查找淘宝历史订单(怎么查找淘宝历史评价)

  • qq安全检查未通过禁止上传文件怎么办(qq安全检查未通过错误码900105)

    qq安全检查未通过禁止上传文件怎么办(qq安全检查未通过错误码900105)

  • 联通光猫正常工作亮几个灯(联通光猫正常工作亮几个灯图解)

    联通光猫正常工作亮几个灯(联通光猫正常工作亮几个灯图解)

  • docx是不是word文档(doc是不是word文档)

    docx是不是word文档(doc是不是word文档)

  • vivo怎样将对方手机号拉黑(vivo怎样将对方手机号取消拉黑)

    vivo怎样将对方手机号拉黑(vivo怎样将对方手机号取消拉黑)

  • 华为投影手机是哪款(华为的投影功能在哪里)

    华为投影手机是哪款(华为的投影功能在哪里)

  • qq辅助资料验证不通过(QQ辅助资料验证失败怎么办)

    qq辅助资料验证不通过(QQ辅助资料验证失败怎么办)

  • 拼多多能看好友买的东西吗(拼多多能看好友在线吗)

    拼多多能看好友买的东西吗(拼多多能看好友在线吗)

  • 多媒体压缩技术的类型(多媒体压缩技术一般分为)

    多媒体压缩技术的类型(多媒体压缩技术一般分为)

  • 小米路由r1c支持千兆吗(小米路由r1c支持mesh)

    小米路由r1c支持千兆吗(小米路由r1c支持mesh)

  • ipad怎么调出home键(iPad怎么调出来小圆球)

    ipad怎么调出home键(iPad怎么调出来小圆球)

  • 手机淘宝怎么找淘小二(手机淘宝怎么找回被删除的订单)

    手机淘宝怎么找淘小二(手机淘宝怎么找回被删除的订单)

  • 手机话筒在哪个位置(手机话筒在什么地方)

    手机话筒在哪个位置(手机话筒在什么地方)

  • 网站服务器是什么东西(网站服务器什么系统好)

    网站服务器是什么东西(网站服务器什么系统好)

  • word中的上标怎么弄(word的上标怎么打)

    word中的上标怎么弄(word的上标怎么打)

  • 索尼电视蓝牙搜索不到设备怎么办(索尼电视蓝牙搜索不到苹果手机)

    索尼电视蓝牙搜索不到设备怎么办(索尼电视蓝牙搜索不到苹果手机)

  • 小米5多大屏幕尺寸(小米多大屏幕尺寸)

    小米5多大屏幕尺寸(小米多大屏幕尺寸)

  • 怎么看自己的腾讯会员谁在用(怎么看自己的腾讯账号登陆了几台设备)

    怎么看自己的腾讯会员谁在用(怎么看自己的腾讯账号登陆了几台设备)

  • mar一al00是什么型号(mar-al00是什么型号多少钱)

    mar一al00是什么型号(mar-al00是什么型号多少钱)

  • 锤子手机如何强制关机(锤子手机如何强制关机同意?)

    锤子手机如何强制关机(锤子手机如何强制关机同意?)

  • 清理喇叭灰尘(iphone清理喇叭灰尘)

    清理喇叭灰尘(iphone清理喇叭灰尘)

  • 缴纳增值税的会计科目
  • 税务局退税多久到账
  • 资产负债表的累计折旧期末数怎么填
  • 上季度弥补以前年度亏损与本季度亏损
  • 万元版和十万元版可以一起用吗
  • 合并财务报表内部交易对净利润影响
  • 土地使用税延期还延续吗
  • 非居民企业投资收益
  • 施工单位对分包单位能罚款吗
  • 合伙企业缴纳税款时间
  • 出口退税进项发票
  • 买车交税怎么算价格
  • 增值税进项发票网上勾选平台
  • 企业所得税报表模板
  • 哪几种跨省邮寄发票是违法的?
  • 当期可抵扣进项税额包括进项转出额吗
  • 税收滞纳金起止时间问题
  • 什么是劳动保护费支出
  • 景区门票 报销
  • 停车场领的定额发票要怎么报税?
  • 自己盖厂房
  • 应收票据盘点表是出纳填吗
  • 物业公司收取的广告费开什么发票
  • 新装的电脑开机慢是什么原因
  • 如何升级mac系统到10.12
  • 对公汇款银行退回
  • 个体工商户和小微企业的区别
  • 预缴的城建税怎么做账
  • bios设置详细介绍配图
  • win7玩什么游戏流畅
  • 电脑每次开机都要选择系统怎么办
  • 应付账款周转天数越大说明什么
  • php新手入门教程
  • 原材料因管理不善发生毁损
  • 福利包括什么
  • 开办费的具体内容有哪些
  • 未分配利润为负的原因
  • thinkphp6.0完全开发手册
  • 纯HTML+CSS小兔鲜儿网站首页(静态网页)
  • 红外图像识别算法
  • websocket怎么读
  • 建筑安装包清工税率多少
  • 小规模资产负债表怎么填写
  • 官方的问答
  • 项目支出可以列办公费吗
  • 土地增值税采用
  • 用友T3财务报表没有数据
  • sqlserver存储过程在哪里
  • sql2008自动启动服务
  • 期末应交增值税的会计科目怎么做
  • 关于税务机关扣押程序
  • 单位举办活动
  • 农民专业合作社属于什么经济类型
  • 营改增后所得税怎么计算
  • 规模以上企业纳税要求
  • 展会赠品
  • 报销需要发票吗?
  • sql外连接
  • mysql单表10亿
  • mysql服务1067进程意外终止
  • Windows server 2008下如何安装应用程序
  • linux安装.sh
  • freebsd常用命令
  • 魔方优化大师是免费的吗
  • win8分屏快捷键
  • 麒麟系统怎么执行命令
  • OpenGL Tutorial: (2) Creating an OpenGL Window
  • jquery validate表单内容怎么添加边框
  • css文件放在什么目录
  • Python类的继承动物类
  • 安卓自定义ui
  • JavaScript、jQuery与Ajax的关系
  • jquery返回顶部
  • javascript简明教程
  • 如何解决老公有外遇
  • jqueryui dialog
  • python ftp storbinary
  • 税收六大体系和六大能力基层
  • 代理记账管理办法2023
  • 怎么查询地税信息表
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设