目录
1. C++实现WebSocket功能的一些参考和建议
1.1 背景
1.2 Websocketfiles简介
2. WebSocket协议解析
2.1 连接握手
2.2 数据传输
3. Websocketfiles使用方法
3.1 源码文件介绍:
3.2 示例程序介绍
3.3 使用方法
1. C++实现WebSocket功能的一些参考和建议
1.1 背景
项目中会遇到让已有的C++服务端增加WebSocket协议支持的情况,Github上有不少开源的C++代码可以参考,比较知名的如websocketcpp,beast, uWebSockets,restbed等等,不过即便有这些代码参考,也难以快速移植代码到你的C++服务器端程序里,原因大致有下面几点:
websocketcpp,beast, uWebSockets等库相对比较重型,代码量较大,快速裁剪并移植到现有C++工程里比较耗时。大家都懂,一般开发时间是比较紧张的,花精力配置运行起来、再对比搞懂这些库没时间啊。
相当多Websocket开源库采用C++11规则编写,但现实是很多C++服务端程序只支持C++98,难以升级编译器。移植C++11代码得不偿失。
WebSocket开源库等与底层网络库耦合的较多,相信各位的服务端都有自己定制的网络库,切换网络库,再考虑线程安全等因素,给修改移植工作带来不少工作量。
另外,Github上还有一些简单的、实验性的WebSocket程序。可惜的是其中很多写的太简单,协议解析和网络传输代码混杂子在一起,散落各处,不便于封装,只能参考,难以用在实际中。
贝松君就遇到上面的尴尬,最后花时间写了一套“不大不小,刚刚合适“的WebSocket解析程序,倒不是我喜欢重新发明轮子,只是拆别人的轮子的时间比造一个合适的轮子还长,我也是没办法啊!现在这部分WebSocket代码已经开源到Github上,暂且命名websocketfiles,欢迎大家使用,觉有用就Star一下吧。
websocketfiles 代码地址:https://github.com/beikesong/websocketfiles
1.2 Websocketfiles简介
先顺着上面简介下,想直接看WebSocket协议讲解的可跳到第二节。
Websocketfiles提供WebSocket协议的最基本功能,完成handshake后,只做协议解包封包,不绑定网络传输层,可以自由移植。特点如下 :
符合RFC6455协议
只专注于WebSocket解包封包,不绑定网络传输层,主体代码不足1000行,能快速熟悉,便于移植。
只包含两个关键类ÿ