我有一个基于 Protobuf 的自定义协议,我已将其实现为 EventMachine 协议,我想通过服务器和客户端之间的安全连接使用它。每次我从客户端向服务器发送消息时,我都会在消息前面加上一个 4 字节整数,表示要发送的 Protobuf 序列化字符串的大小,以便服务器在解析之前知道要从线路读取多少字节数据返回到 Protobuf 消息中。
我在客户端和服务器协议处理程序中调用start_tls
回调post_init
方法,服务器处理程序中的一个被传递服务器的私钥和证书。根据我正在打印的日志消息,在这个阶段似乎没有发生错误。
我遇到麻烦的地方是当我开始receive_data
在服务器处理程序代码的回调中解析数据时......我从线路上读取了 4 个字节的数据并将其解压缩为一个整数,但解压缩的整数与我的整数不同从客户端发送(即我发送 17,但接收 134222349)。
请注意,当我不使用 TLS 时不会发生这种情况......如果我删除start_tls
客户端和服务器代码中的调用,一切正常。
使用 TLS 时SSL/TLS 数据是否会传递给receive_data
回调?如果是这样,我怎么知道来自客户端的数据何时开始?我似乎找不到任何讨论这个用例的示例代码......