前言
近期有使用Websocket+TLS的后端接口的需求。但是毕竟Lazarus和Free Pascal这个圈子比较冷门,资料会比较少,所以学习起来还有点困难。本文会简单介绍如何建立Websocket+TLS/SSL的连接
库克
有库就能克服困难。我们需要用到的库:LazWebsockets
这个库能创建ws服务器,也可以创建ws客户端,本文只会介绍创建ws客户端,原因不言而喻。更多内容请见仓库中的README.MD
首先将这个仓库克隆到本地,然后把LPK文件拖进Lazarus IDE,安装到IDE或者添加到项目都可以。
到项目的Project Inspector,如果Required Packages里面有没有websockets,没有的话点击Add-New Requirement,搜索websockets并添加。
接着在uses中添加websockets, WebsocketsClient, wsstream, opensslsockets
wsstream里面定义了TWebsocketCommunicator,这是用来和服务器进行通信的类。
opensslsockets用于实现SSL/TLS通信,需要注意的使用OpenSSLSockets需要依赖OpenSSL库,Windows上可以直接把Indy那边的openssl-1.0.2u-x64_86-win64.zip里面的文件拿过来用,Linux上系统上可能已经装了OpenSSL的软件包就不需要再进行额外的操作了,别的环境我也不知道、也没用过。
建立连接
首先需要定义一个TWebsocketClient类型的变量和TOpenSSLSocketHandler类型的变量,并使用其构造器函数Create创建实例。
TWebsocketClient.Create(’主机名‘, 端口, '/路径');
TOpenSSLSocketHandler.Create;
随后,使用TWebsocketClient对象中的Connect方法,需要传入一个TOpenSSLSocketHandler类型的参数(就是刚创建的那个)(如果只是单纯的Websocket而不需要SSL/TLS加密,请将参数留空,也不需要使用OpenSSL)
Connect方法会返回一个TWebsocketCommunicator对象,请使用变量接收它并保存好,这个对象非常重要,数据的收发有关的方法都要从这里面调用。
收发数据
由于这部分内容有些多,但不复杂,建议直接阅读README.MD中的说明
发送消息这部分内容不多,简单介绍一下,都是Write开头的方法,打个.Write然后按ctrl+空格,跟着IDE的代码提示就能很轻松写出来。
关闭连接
调用TWebsocketCommunicator对象中的close方法。
发表回复