位置: 编程技术 - 正文

基于node实现websocket协议(node实战)

编辑:rootadmin

推荐整理分享基于node实现websocket协议(node实战),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:基于node的网站有哪些,基于node实现多人聊天室,基于node实现多人聊天室,基于nodejs的项目,基于node实现js破解,基于nodejs的项目,基于node的网站有哪些,基于node实现多人聊天室,内容如对您有帮助,希望把文章链接给更多的朋友!

一、协议WebSocket是一种基于TCP之上的客户端与服务器全双工通讯的协议,它在HTML5中被定义,也是新一代webapp的基础规范之一。

它突破了早先的AJAX的限制,关键在于实时性,服务器可以主动推送内容 到客户端!可能的应用有:多人在线游戏,即时聊天,实时监控,远程桌面,新闻服务器等等。

对于我自己,当前最想尝试的是canvas+websocket组合起来能做什么。

二、实现由于握手的过程是一个标准的HTTP请求,因此 websocket 的实现有两种选择:1)TCP上实现; 2) 现有HTTP软件上实现。后者的优势在于可以共用现有的HTTP服务器端口,并且不用重新实现认证功能和解析HTTP请求的功能。

这个示例中使用的 node 的HTTP模块。(TCP版及所有文件见 附件)

1、node服务器端代码:

2、浏览器客户端代码:

三、细节在 http 协议之上的 websocket 协议实现只有两步:握手,发送数据。

1、握手握手的过程被称为 challenge-response。首先客户端发起一个名为Upgrade的HTTP GET请求,服务器验证此请求,给出响应以表示接受此次协议升级,握手即完成了。

基于node实现websocket协议(node实战)

chrome inspector美化过的握手信息:

Request URL: Method:GETStatus Code: WebSocket Protocol Handshake

Request HeadersConnection:UpgradeHost:...:Origin: G T jAf2Sec-WebSocket-Key2:z Z Q ^ 5 9= 7s1 1 7H4Sec-WebSocket-Protocol::my-custom-chat-protocolUpgrade:WebSocket(Key3):7C:::CA:1F::D2:0A

Response HeadersConnection:UpgradeSec-WebSocket-Location: Response)::DF:2C:F4::C2:8E:::B7:7D::CF:C8::

请求头部分

Host: websocket服务器主机Connection: 连接类型Upgrade: 协议升级类型Origin: 访问来源Sec-WebSocket-Protocol: 可选,子协议名称,由应用自己定义,多个协议用空格分割。(*另外一个仅剩的可选项是cookie)Sec-WebSocket-Key1: 安全认证key,xhr请求不能伪造'sec-'开头的请求头。Sec-WebSocket-Key2: 同上Key3: 响应体内容,8字节随机。响应头部分

Sec-WebSocket-Protocol: 必须包含请求的子协议名Sec-WebSocket-Origin: 必须等于请求的来源Sec-WebSocket-Location: 必须等于请求的地址Challenge Response: 响应体内容,根据请求中三个key计算得来,字节。应答字符串计算过程伪代码:

位整数的big_endian计算策略:

2、发送数据WebSocket API的被设计成用事件处理数据,客户端只要得到事件通知就可以获取到完整的数据,而不需要手动处理缓冲器。

这种情况下,每一笔数据被称为一帧。在规范的定义中,它的头部必须以0x开始,尾部属性以0xff结束,这样每一次数据发送至少有两个字节。

服务器实现中,收到数据时要截掉头尾;而发送数据是要包装头尾。格式如下:

# '你好'的原始二进制表示,请求头和这里都是utf8编码<Buffer e4 bd a0 e5 a5 bd># 包装后的二进制表示。<Buffer e4 bd a0 e5 a5 bd ff>

标签: node实战

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

上一篇:基于 Node.js 实现前后端分离(node-js)

下一篇:Windows 系统下设置Nodejs NPM全局路径(window系统设置)

  • 独资企业赚的钱全是老板的吗
  • 增值税一般纳税人证明文件
  • 借递延所得税资产贷其他综合收益
  • 企业所得税汇算清缴退税怎么做账
  • 增值税税率
  • 税务师有什么用处
  • 财务状况说明表财务报表有什么区别
  • 商业汇票申请贴现分录
  • 厂区地面硬化属于土建还是市政
  • 预付卡发票可以报销吗?
  • 差旅费的现金流
  • 公司自用车辆出售如何交税
  • 技术推广服务包含什么 奇瑞汽车
  • 工资薪金所得和全年一次性奖金
  • 公司退款给客户怎么写
  • 申报怎么打印
  • 建筑行业新老项目对比
  • 企业所得税连续3年亏损预警自查报告
  • 制造费用的
  • 取得增值税专用发票
  • 公司一次性缴纳全年社保
  • 店面转让出去收到的钱如何做账?
  • 公司采购商品支付货款未开票会计分录
  • 报关单上的运费怎么看
  • 成本费用总额包括信用减值损失吗
  • 员工交通费报销标准
  • 小规纳税人租金可以记入成本吗
  • 企业所得税是怎么来的?
  • 事业单位财政拨款是什么意思
  • 事业单位年末预算会计货币资金在贷方有余额对吗
  • 学校食堂承包餐饮公司
  • 资本公积转增实收资本个人所得税
  • 鸿蒙系统控制中心
  • win11无法打开英雄联盟
  • 购买商品接受劳务的现金流包括哪些
  • 高速过路费抵扣进项怎么填报
  • 标准差怎么算 例题
  • 单位性质有哪些类型
  • 失业稳岗补贴要交社保吗
  • sonar-scanner需要配置环境变量
  • 银行进账单和现金缴款单的区别
  • 资产负债所有者权益损益类会计科目
  • 创业投资企业可以签订代持股协议吗合法吗
  • 不动产固定资产的进项税抵扣新规定
  • php中使用什么函数来定义常量
  • 工程发票预缴是什么意思
  • mongodb操作数据库
  • 零税率与免税有何区别
  • 无偿提供建筑服务缴纳增值税
  • 销售车位应怎么交税
  • 印花税只能到角吗
  • 数据库用户名称
  • 工程施工属于什么经营范围
  • 收据作为原始凭证的依据
  • 个体工商户开具房屋租赁发票
  • 劳务费入什么费用
  • 计提借款利息怎么算
  • 工程预付款发票开什么明细项目
  • 企业职工福利费的扣除标准是多少?
  • 购买商品属于什么费用
  • 小规模纳税人劳务派遣差额征税税率
  • 银行汇票后面怎样背书盖章
  • 股东退股如何清算
  • 实收资本小于注册资本账务处理
  • 原始凭证的审核和填制
  • 公司的残保金是分摊到员工身上的吗
  • 在MySQL中使用GTIDs复制协议和中断协议的教程
  • win8怎么升级到win7
  • linux的问题
  • 怎样一键清空
  • win7设置路由器上网
  • windows7如何调节屏幕色彩
  • linux 用户进程
  • linux检查文件内容
  • node.js适用哪些场景
  • js domcontentloaded
  • jquery鼠标点击事件怎么写
  • js中写html代码
  • jquery3.6
  • 税务处理决定书属于行政处罚吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设