位置: 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的区别(前端经典面试题讲解)

  • 网站建设完成后怎样实现精准网络营销(网站建设步骤与工作进度)

    网站建设完成后怎样实现精准网络营销(网站建设步骤与工作进度)

  • 注册表编辑器(注册表编辑器)(注册表编辑器怎么恢复默认设置)

    注册表编辑器(注册表编辑器)(注册表编辑器怎么恢复默认设置)

  • 如何更改群个人名称备注(如何更改qqip)(怎样修改群里个人昵称)

    如何更改群个人名称备注(如何更改qqip)(怎样修改群里个人昵称)

  • 支付宝我的页面怎么管理(支付宝我的页面怎么设置密码)

    支付宝我的页面怎么管理(支付宝我的页面怎么设置密码)

  • 荣耀v30的刷新率是60还是90(荣耀v30刷新率能调120吗)

    荣耀v30的刷新率是60还是90(荣耀v30刷新率能调120吗)

  • vivoy93s如何设置指纹(vivoy93s如何设置时间密码壁纸锁屏显示)

    vivoy93s如何设置指纹(vivoy93s如何设置时间密码壁纸锁屏显示)

  • airpods耐摔吗(airpods耐摔程度)

    airpods耐摔吗(airpods耐摔程度)

  • 手机后膜影响散热吗(手机后膜会影响信号吗)

    手机后膜影响散热吗(手机后膜会影响信号吗)

  • 北京苹果手机售后服务政策(北京苹果手机售后维修站崇文门)

    北京苹果手机售后服务政策(北京苹果手机售后维修站崇文门)

  • ppt背景图怎么设置透明度(PPT背景图怎么设置自己的图片)

    ppt背景图怎么设置透明度(PPT背景图怎么设置自己的图片)

  • 华为前置摄像头打不开(华为前置摄像头模糊不清)

    华为前置摄像头打不开(华为前置摄像头模糊不清)

  • 抖音审核通过了为什么别人看不到(抖音审核通过了播放量不增加)

    抖音审核通过了为什么别人看不到(抖音审核通过了播放量不增加)

  • 大王卡多久不用会自动注销(19元的大王卡怎么没有了)

    大王卡多久不用会自动注销(19元的大王卡怎么没有了)

  • 网络显示已连接不可上网(网络显示已连接需要登录认证)

    网络显示已连接不可上网(网络显示已连接需要登录认证)

  • 苹果x13.2版本来闪光灯打开了怎么不闪(苹果x13.2.3系统怎么样)

    苹果x13.2版本来闪光灯打开了怎么不闪(苹果x13.2.3系统怎么样)

  • 联通无法接通怎么回事(联通无法接通怎么设置)

    联通无法接通怎么回事(联通无法接通怎么设置)

  • 苹果相机一闪一闪的怎么回事(苹果相机一闪一闪的灯)

    苹果相机一闪一闪的怎么回事(苹果相机一闪一闪的灯)

  • 闲鱼怎么删除别人的赞(闲鱼怎么删除别人的评价还得删除动态吗)

    闲鱼怎么删除别人的赞(闲鱼怎么删除别人的评价还得删除动态吗)

  • word如何画出线段图(怎么在word画线)

    word如何画出线段图(怎么在word画线)

  • eps ups区别(eps和ups哪个贵)

    eps ups区别(eps和ups哪个贵)

  • 手机录像播放不出来(手机录像播放不出来怎么回事)

    手机录像播放不出来(手机录像播放不出来怎么回事)

  • 华为曲面屏容易摔碎吗(华为曲面屏容易误触吗)

    华为曲面屏容易摔碎吗(华为曲面屏容易误触吗)

  • 华为al30是什么手机(华为手机al30)

    华为al30是什么手机(华为手机al30)

  • 拼多多怎么备注留言(拼多多怎么备注给商家)

    拼多多怎么备注留言(拼多多怎么备注给商家)

  • 苹果6怎么连蓝牙耳机(苹果怎么连蓝牙耳机)

    苹果6怎么连蓝牙耳机(苹果怎么连蓝牙耳机)

  • 魅族16如何看运行内存(魅族16s怎么查看剩余运行内存)

    魅族16如何看运行内存(魅族16s怎么查看剩余运行内存)

  • 苹果的照片怎么加载不出来(苹果的照片怎么导入另一个苹果手机)

    苹果的照片怎么加载不出来(苹果的照片怎么导入另一个苹果手机)

  • 北方针叶林中的欧洲棕熊幼崽,芬兰 (© Jules Cox/Minden Pictures)(北方针叶林的特征有哪些?)

    北方针叶林中的欧洲棕熊幼崽,芬兰 (© Jules Cox/Minden Pictures)(北方针叶林的特征有哪些?)

  • 税控盘开票软件访问数据库错误
  • 公司购买车辆的好处
  • 公司间借款利息增值税进项能否抵扣
  • 提前买礼物
  • 翻唱歌曲发行时怎么把原唱名字改了
  • 利润是非限定净现值吗
  • 什么情况下要交土地出让金
  • 什么情况可以安排待岗
  • 公转私操作步骤
  • 间接持股数怎么计算
  • 利润为负数利润增长率怎么算
  • 资产负债表其他流动资产包括什么
  • 一般纳税人增值税申报操作流程
  • 职工福利部门的工资
  • 收到国外的服务费怎么开票
  • 收到银行存款怎么记账
  • 应收账款预付账款属于什么科目
  • 代发农民工工资承诺书
  • 租赁到期日 英语
  • 税收折旧率
  • 利润负数所得税怎么算
  • 没有预付账款科目计入哪里
  • 开票需要对方提供营业执照吗
  • 领用原材料用于职工福利的税费怎么算
  • 知识产权?
  • 重装系统D盘文件还能恢复吗
  • 台式电脑开不了机怎么办 屏幕黑屏
  • 任务栏音量图标点击无反应
  • PHP:xml_set_processing_instruction_handler()的用法_XML解析器函数
  • 利用的英文
  • 赔偿材料做什么分录
  • 公司买车怎么入户
  • linux 定时删除文件
  • php的数组函数
  • 甲公司购入一台入账价值为200万元的生产设备
  • 软件服务费应计入什么
  • 季度缴纳企业所得税计算方法
  • ChatGPT-Next-Web:Vercel 和 Cloudflare 的快速部署
  • js 切面
  • 查看ls命令的使用手册
  • php加密技术
  • 注册资本增加了怎么做账
  • 公司车辆固定资产转移税
  • 全年累计个税扣除公式
  • SQLSERVER2008中CTE的Split与CLR的性能比较
  • mysql配置怎么调出来
  • 发票入账需要哪些附件的文件
  • 可供出售金融资产名词解释
  • 企业所得税的税收筹划
  • 给保安买大衣算贿赂吗
  • 如何区分借贷方和负债方
  • 本年利润的会计分录怎么写
  • 上个月的发票未开具
  • 财务报销单据粘贴视频
  • 销售发奖金感谢说说
  • 100%直接控制的母子公司之间,母公司向子公司
  • 发票开错了只能冲红票吗?
  • mysql 5.7.24安装
  • centos如何运行程序
  • bios设置u盘启动顺序
  • 比较常见的别墅户型
  • 使用注册表删除软件时,有些拒绝访问
  • windows端口占用怎么关闭
  • windows10新功能
  • win8中的wps点打印预览就卡
  • windows10粘滞键
  • win7如何安装iis7.0
  • 怎么从win8装回win7
  • 手机屏幕尺寸测量工具
  • 深入理解新发展理念心得体会3篇
  • css 网页布局
  • unity怎么设置多个关卡
  • android图库
  • javascript快速入门
  • 电子税务局校验码
  • 境外承包工程款收入
  • 国家税务总局令16号公告
  • 江西省税务局公众号
  • 北京地税局报税流程
  • 2020年国税和地税怎么申报
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设