Floppy β Studio
Floppy β Studio

FreePascal中使用WSS通信

前言

近期有使用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方法。

发表回复

textsms
account_circle
email


Floppy β Studio

FreePascal中使用WSS通信
前言 近期有使用Websocket+TLS的后端接口的需求。但是毕竟Lazarus和Free Pascal这个圈子比较冷门,资料会比较少,所以学习起来还有点困难。本文会简单介绍如何建立Websocket+TLS/SSL的…
扫描二维码继续阅读
2023-01-28