使用libwebsocket技术.docx
以libwebsocket v3.2为例,实际研究websocket服务。实际测试firfox 70 ,chrome 78,IE 11,edge,以及一大波国产浏览器(双核含IE11) firefox 71含有http2 spdy协议,对wss安全协议通信有较大影响,折腾了好久才偶然找到原因 ### 使用libwebsocket技术知识点概述 #### 一、libwebsocket简介及版本信息 - **libwebsocket** 是一个轻量级的WebSocket服务器库,适用于快速开发基于WebSocket的应用程序。 - **版本**: 本文档主要讨论的是libwebsocket v3.2版本。 #### 二、编译libwebsocket 1. **CMake工具**: - 需要使用CMake工具来构建项目,首先打开位于根目录下的`CMakeLists.txt`文件进行配置。 - 特别注意需要配置OpenSSL库的路径。 2. **OpenSSL兼容性**: - 当前版本(libwebsocket v3.2)需要使用OpenSSL v1.1.x或更高版本。 - 如果使用较低版本的OpenSSL(如v0.9.8k),则只能选择内置的SSL模块,而通常建议使用OpenSSL库进行加密。 3. **OpenSSL编译差异**: - 在终端安全登录产品中使用的OpenSSL v0.9.8k编译后的目标库为`libeay32.dll`和`ssleay32.dll`。 - 而libwebsocket支持的OpenSSL v1.1.x编译后的库名为`libssl`和`libCrypto`。 - 编译时需要指定`CFLAG=/MT`,以确保编译依赖于标准C运行时,减少对Visual C++运行时的依赖。 4. **支持的协议**: - 支持HTTP 1.1和HTTP 2.0。 - 支持SSL/TLS安全通信。 #### 三、安全WebSocket的实现 1. **自签名证书的生成**: - 可以使用OpenSSL工具来生成自签名证书,具体命令如下: ```sh openssl genrsa -out server.key 2048 openssl rsa -in server.key -out server.key openssl req -sha256 -new -key server.key -out server.csr -subj "/CN=localhost" openssl x509 -req -sha256 -days 365 -in server.csr -signkey server.key -out server.crt ``` - 或者使用以下命令一次性完成: ```sh openssl req -x509 -nodes -days 365 -newkey rsa:4096 -keyout self.key.pem -out self-x509.crt -subj "/C=CN/CN=localhost" ``` 2. **编译测试工程**: - 需要创建Visual Studio控制台应用程序项目,并引用`websocket.dll`动态库。 - 编译选项为`/MT`,以编译为动态链接库。 - 编译过程中需要链接的库包括`ws2_32.lib;userenv.lib;psapi.lib;iphlpapi.lib;advapi32.lib`。 - 可以在`lws_context_creation_info`结构体中指定自签名证书和私钥的文件路径。 3. **安全WSS协议测试**: - 不同的浏览器需要预先设置SSL安全例外,以信任自签名的服务证书。 - 对于Google Chrome浏览器,可以直接运行测试示例并正常进行数据收发。 - 通过调试工具可以看到首次连接的过程,包括发送`wss://localhost:8443/`请求和`101 Switching Protocols`响应等细节。 #### 四、浏览器兼容性 - **测试浏览器**: - Firefox 70 - Google Chrome 78 - Internet Explorer 11 - Microsoft Edge - 多款国产浏览器(双核含IE11) - **Firefox 71的新特性**: - Firefox 71包含HTTP/2和SPDY协议支持,这对WSS安全协议通信有一定影响。 - 需要注意Firefox 71及以上版本中的新特性可能会导致与libwebsocket交互的问题,需要额外调试。 #### 五、总结 - 本文档详细介绍了如何使用libwebsocket v3.2版本来实现WebSocket服务,包括编译配置、安全通信的实现以及在不同浏览器中的兼容性测试等内容。 - 特别强调了OpenSSL版本的重要性及其编译差异,这对于实现安全的WebSocket通信至关重要。 - 通过本文档的学习,开发者可以更好地理解和掌握libwebsocket的基本使用方法和技术要点,从而能够更高效地开发出基于WebSocket的应用程序。


















- 粉丝: 1
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 用友软件在日常核算中常见问题【会计实务操作教程】.pptx
- 专题讲座资料(2021-2022年)关于近年来信息化工作情况的汇报.docx
- 加强网络信息安全的建议书.docx
- 网络购物项目可行性报告.doc
- 计算机组装与维护(第二版)-项目1-任务6声音系统.pptx
- 数据挖掘项目Python——银行对中小微企业信贷策略的关键技术应用
- 中国网络零售现状调研报告.pptx
- 综合布线系统布线系统测试与工.pptx
- 如何撰写项目管理专业论文.ppt
- 人工神经网络-专题知识专家讲座.pptx
- 通信技术在生活中的作用.doc
- 电子商务脱贫奔康自查报告.docx
- 微软(中国)有限公司的简历挑选方法.pdf
- 网络服务协议标准版.doc
- (源码)基于Node.js的多平台自动签到系统.zip
- 基于PLC的自动洗车控制系统(DOC).doc


