位置: 编程技术 - 正文

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 代理请求)

  • 收到退回的以前年度租金怎么处理
  • 公司购买新车购置税是否可以抵扣呢
  • 个税申报申报方式选择
  • 劳务费代扣代缴后还需要开发票吗
  • 营改增后房地产企业增值税税率
  • 初始数据试算表不平衡的原因
  • 支付境外费用需要交哪些税
  • 单位旧电脑处置
  • 转账支票怎么进账到个人账户
  • 出口退税管理系统怎么登录
  • 水电费的发票要交税吗
  • 什么叫金税四期呢?
  • 财税〔2017〕39号商业健康保险个人所得税
  • 向关联企业支付管理费用可以税前扣除吗
  • 报表上应交税费是负数是什么意思
  • 与建筑物有关的设计
  • 业务招待费不超过销售收入的5‰
  • 产品打样费计入什么科目
  • 残疾小伙小强
  • 关闭系统保留空间
  • 电脑怎么一键返回到桌面
  • 静态回收期怎么计算
  • 流动资产和非流动资产占比多少合适
  • 出差补贴算工资薪金吗
  • 森林植被恢复费标准
  • 研发费用支出税前扣除比例
  • 异地银行结算账户的特点
  • 计提短期借款利息资产增加还是减少
  • 我国增值税的纳税范围包括
  • 固定资产折旧的方法有几种
  • 梅尔加足球俱乐部
  • php主要用于
  • 过来人告诉你:女人最珍贵的三种东西,舍得给你说明爱你
  • js继承的几种方式 各有什么优缺点
  • 公司期货套期保值会计处理方法
  • 可供出售金融资产是流动资产吗
  • 2021新财务报表
  • 外管证预缴税款上报后,怎么交税
  • java中的常量是什么意思
  • 预算单位往来资金增加申报表代办人签字有风险吗?
  • 金税四期的特点
  • 贴现模式怎么计算利息
  • 一次性扣除固定资产出售处理
  • 出差在火车上算上班吗
  • 利息收入如何做分录
  • 代收物业费有什么风险
  • 基本医疗保险费是医保吗
  • 损益类科目如何填写手工总账
  • 建筑业异地预缴个税税率
  • 付外汇代缴税费
  • 建筑行业小规模纳税人税率1%
  • perl -ne
  • sql如何学
  • mysql的操作方法
  • 动态sql语句怎么写
  • 判断一个表是否存在
  • window7 32位系统
  • 如何系统还原xp
  • windowssystem32oobe找不到指定的路径
  • win7修改系统版本
  • switpa.exe - switpa是什么进程
  • 电脑xp系统如何
  • 装win8还是win10
  • noads.exe - noads是什么进程 有什么用
  • win8电脑锁屏壁纸怎么设置方法
  • 怎么判断进程是否存在
  • cocos jsc
  • Javascript获取元素的父元素
  • node.js怎么学
  • node chain
  • 输出中断
  • jquery写网页
  • js判断页面是否跳出弹窗
  • js合并两个数组并排序
  • 容积率大于0.5 房产原值怎样算
  • 个人所得税父母双方专项扣除
  • 机构改革哪个单位负责
  • 月收入不足1000
  • 国家电子税务局app下载
  • 车辆检测费属于什么科目
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设