位置: 编程技术 - 正文

socket.io学习教程之深入学习篇(三)(socketio视频教程)

编辑:rootadmin

推荐整理分享socket.io学习教程之深入学习篇(三)(socketio视频教程),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:socket.io.js,socket.io api,socket入门,socket入门,socketio视频教程,socketio视频教程,socket 教程,socket怎么学,内容如对您有帮助,希望把文章链接给更多的朋友!

前言

socket.io提供了基于事件的实时双向通讯,本文深入的介绍了socket.io,下面来看看详细的内容吧。

静态文件

socket.io默认情况下会通过socket.io-client包提供socket.io.min.js和socket.io.js.map下载

运行实例app.js

浏览器访问 实例化时传入控制参数serveClient值false

方法2: 调用函数serverClient

如果在调用函数前服务已绑定http.Server,该方法将不起作用

禁用后再次访问将提示{"code":0,"message":"Transport unknown"}

修改静态文件路径

socket.io.js路径可以改变,其默认路径为/socket.io。

实例化时传参

调用函数path

如果在调用函数前服务已绑定http.Server,该方法将不起作用

安全策略

socket.io提供了两种安全策略

allowRequest

函数allowRequest有两个参数,第一个参数为收到的握手包(http.request)对象,作为判断依据, success), err是错误对象,success为boolean, false表示阻止建立连接

前端请求带上token

后端allowRequest根据token判断是否继续

origins

可以对源进行限制

1、实例化时限制源

2、origins函数设置源

origins函数有两种形式

origins(string) : 设置运行的源

origins(string, fn(err, success)) : 通过函数判断源是否允许

socket.io学习教程之深入学习篇(三)(socketio视频教程)

名称空间

名称空间用来对服务端/客户端的连接隔离,有些地方,也称呼名称空间(namespace)为通道(channel)。下面举例对其意义进行说明

我们需要实现一个协同应用,这个应用有两个功能:

协同编辑: 多个用户可以同时编辑一个文档 消息: 用户间可以发送消息

用socket.io实现这个应用,有如下几种形式

1、完全独立: 协同编辑有一个独立服务edit.socket.test ,消息系统一个独立服务message.socket.test

2、名称空间: 只运行一个独立服务,通过名称空间进行隔离

3、事件名约定: 通过为事件名添加进行隔离

通过事件名约定程序的侵入性太大,不利于拆分和重组,不推荐。 而完全独立的模式需要使用两个socket连接,即浪费浏览器允许的并发连接数,又更多消耗服务器资源。使用名称空间即能实现很好的隔离,又不会对资源造成浪费。

默认名称空间

socket.io实例化时自动绑定路径为/的名称空间

中间件

socket.io的名空间通过use注册中间件,中间件在客户端与服务端建立连接成功后,connet事件派发前调用一次。

利用中间件数据校验

利用中间件提取或转换数据 io.use((socket, next) => { getInfo(socket.request.query.id, (err, data) => { if (err) return next(err) socket.custom = data next() }) })

与allowRequest对比

allowRequest可以进行一些校验,提取,为什么还要需要中间件&#;

allowRequest传入的http.request实例,而中间件出入数据socket实例,socket实例包含request实例,且有更多信息 中间件直接支持多个异步流程嵌套,而allowRequest需要自己实现

与connection事件对比

connection事件也传入socket,也可以进行数验,提取,为什么还要需要中间件&#;

中间件直接支持多个异步流程嵌套,而allowRequest需要自己实现 中间件成功后到connection事件发送成功前,socket.io还做了一些工作,比如把socket实例添加到connected对象中,加入聊天室等。如果因为权限中断连接,在中间件中处理更省资源.

聊天室

聊天室是对当前连接的socket集合根据特定规则进行归组,方便群发消息。可以类比QQ群的概率.

默认聊天室

每个socket在连接成功后会自动创建一个默认个聊天室,这个聊天室的名字是当前socket的id,可以通过默认聊天室实现向特定用户发送消息

消息发送

应答消息

普通消息不需要回应,而应答消息提供了应答机制

压缩

socket.compress(true)启用压缩,调用后当前连接的所有数据在传递给客户端前都会进行压缩

volatile标志

socket.io在正常情况下对发送的消息进行追踪,确保消息发送成功,而设置volatile后发送消息,socket.io不会对消息追踪,消息可能丢失

分类

总结

标签: socketio视频教程

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

上一篇:socket.io学习教程之基本应用(二)(socket怎么用)

下一篇:node.js 抓取代理ip实例代码(nodejs 代理请求)

  • SQL Server2008 R2 数据库镜像实施手册(双机)SQL Server2014同样适用(sqlserver2008r2数据库导出教程)

    上图中将“恢复模式”选成“完整模式”。

    2、备份数据库,如下图:

    备份时将“备份类型”选成“完整”。

    3、备份事务日志,如下图:

    将“备份类型”选成“事务日志”且备份目录与备份数据库的目录一致。

    将备份文件在备机上使用主机的全备文件进行还原,在还原数据的时候需要使用选上“with non recover”。如图所示:

    如果执行成功数据库将会变成这个样子:

    3、 建立镜像

    说明:shishan为数据库名,需要根据实际进行修改。..1.为备机IP地址,需根据实际进行修改。

    执行成功后:

    到此,SQL镜像热备配置完成。

    四、常见命令

    备份主数据库出现:Backup a database on a HDD with a different sector size,可以执行以下语句备份:BACKUP DATABASE MyDB TO DISK = N'D:MyDB.bak' WITH INIT , NOUNLOAD , NAME = N'MyDB backup" class="img-responsive" alt="SQL Server2008 R2 数据库镜像实施手册(双机)SQL Server2014同样适用(sqlserver2008r2数据库导出教程)">

    SQL Server2008 R2 数据库镜像实施手册(双机)SQL Server2014同样适用(sqlserver2008r2数据库导出教程)

  • linux mysql 找回密码

    linux mysql 找回密码

  • mysql found_row()使用详解

    mysql found_row()使用详解

  • Mac系统中的邮箱怎么创建126邮箱帐户?(mac 邮箱)

    Mac系统中的邮箱怎么创建126邮箱帐户?(mac 邮箱)

  • Linux系统下Flash Player崩溃的一个解决办法分享(linux版flash)

    Linux系统下Flash Player崩溃的一个解决办法分享(linux版flash)

  • ahjesus安装mongodb企业版for ubuntu的步骤(mongo 安装)

    ahjesus安装mongodb企业版for ubuntu的步骤(mongo 安装)

  • 关于linux中Squid代理服务器的10个实用面试问答

    关于linux中Squid代理服务器的10个实用面试问答

  • Win10系统打开文件提示文件系统错误(-2147416359)怎么解决(win10系统打开文件夹就不停的闪)

    Win10系统打开文件提示文件系统错误(-2147416359)怎么解决(win10系统打开文件夹就不停的闪)

  • jQuery+PHP+MySQL二级联动下拉菜单实例讲解

    jQuery+PHP+MySQL二级联动下拉菜单实例讲解

  • jQuery动态添加及删除表单上传元素的方法(附demo源码下载)(jquery动态添加css样式)

    jQuery动态添加及删除表单上传元素的方法(附demo源码下载)(jquery动态添加css样式)

  • 工程结算成本和合同成本区别
  • 城市维护建设税怎么做分录
  • 印花税什么情况可以退
  • 小企业会计准则以前年度损益调整
  • 个体工商户所得税税率表
  • 4s店收取的金融服务费用
  • 工程围挡做法
  • 无形资产除了专利还有什么
  • 公账发工资是即时到账吗
  • 账本印花税怎么缴纳
  • 饭店收停车费
  • 银行存款日记账和现金日记账的区别
  • 工业企业和其他企业经营的对象
  • 合伙企业收到投资款要缴纳印花税吗
  • 如何降低融资成本率
  • 一般纳税人销售二手车增值税税率
  • rundll.exe是什么程序
  • 什么是应交税费科目
  • 其他应付款转营业外收入需要交增值税吗
  • mac休眠模式
  • sguard是什么
  • PHP:class_implements()的用法_spl函数
  • 汇付的注意事项有哪些内容
  • win10电脑记事本在哪
  • vue设置时间格式
  • 计提坏账准备的方法有哪些
  • 个人专利奖励是什么意思
  • mac vue搭建本地环境
  • 物业费开增值税专用发票
  • 金融商品转让业务包括
  • Yii使用migrate命令执行sql语句的方法
  • 对方不开票
  • 深入理解计算机系统 第三版 pdf
  • 税金及附加和营业收入有关系吗
  • 微服务springboot结构
  • 为什么说网络安全靠人民
  • vue从入门到精通教程
  • update-initramfs -u命令
  • 增值税进项税额计算公式
  • asp连接sqlserver数据库的三种方式是什么?
  • 资产捐赠账务处理
  • 全国信息技术服务业
  • 报销的注意事项
  • 经营范围没有的项目开票了会怎么样
  • 小规模纳税人开票限额是多少
  • 个体户开出的发票没跟对方说自己冲红了怎么办
  • 个税免税部分
  • 个体户开电子发票怎么申请
  • 税金及附加里面包含什么
  • 企业年度报告填报时间
  • 企业收到的财政性补贴要交企业所得税吗
  • 库存现金盘点表模板
  • 日常生活中各种形式的能量的转化
  • 税控盘服务费怎么填增值税申报表
  • 水利建设基金怎么交
  • 公众责任险作用
  • jdbc数据库连接步骤
  • 配置是什么意思
  • mysql 查找
  • centos7如何添加永久静态路由
  • centos强制关闭程序
  • centosfind命令
  • win7禁用驱动签名后可以正常启动吗
  • mac锁定快捷键
  • realjbox.exe - realjbox是什么进程 作用是什么
  • win10 20h2 v2
  • 安装win7旗舰版变了家庭版
  • win7的系统设置
  • jquery 定位
  • button按钮类型
  • 使用的英文
  • unity调用c++动态库
  • python3循环语句
  • javascript模块化规范
  • javascript要怎么学
  • python获取xhr
  • 航天金税开票软件服务费可以抵扣税款吗
  • 住宿增值税专票税点是多少
  • 地税审计税务稽查局职责
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设