websocket最近几年开始流行起来,它是一种在单个 TCP 连接上进行全双工(full-duplex)通讯的协议,
具体介绍可参考阮一峰老师写的WebSocket 教程,网址:http://www.ruanyifeng.com/blog/2017/05/websocket.html
或者Alpha的WebSocket http://javascript.ruanyifeng.com/htmlapi/websocket.html
或者这篇博客https://halfrost.com/websocket/。
这些介绍websocket都较为详细,我就不介绍相关方面了。
ArrayBuffer对象:代表内存之中的一段二进制数据,目前有关ArrayBuffer资料甚多,这里就不I详细介绍了。
XIC协议消息格式:一种用于web的消息通信协议格式。详细介绍参考熊家贵老师文档介绍: https://github.com/halftwo/knotty/blob/master/doc/xic.rst
VBS编码:将数据编写成二进制表示形式,并且将数据类型也编入到编码后的字节流中。详细介绍参考熊家贵老师文档介绍:https://github.com/halftwo/knotty/blob/master/doc/vbs.rst
EAX加密算法: 提供认证和加密的算法,加密和认证各自有一把key,可以对任意长度数据加密的算法。(后续会有详细介绍)
Srp6a: 双向认证协商公共秘钥的算法。
简单阐述了这几项技术的介绍,接下来切入正题:项目地址:https://github.com/ying2025/websocket---vbs(目前进行中)
一、项目对外提供接口:
ClientSocket:(websocket.js)
主要提供有连接,发送数据,接收数据,错误处理函数,优雅关闭,读取二进制,生成Txid等函数。
MsgHeader(message.js)
image.png
主要提供pack各钟XIC消息格式和unpack各种XIC消息格式的函数
CryptoJS(eax.js)
主要提供EAX加密的各种接口。
clientInit、clientComputeM1、verifyM2(SRP6a.js)
提供客户端初始化,计算认证M1,验证M2等方法。
二、整体架构图
image.png
image.png
网友评论