我在这里寻找设计建议。如果我们使用 socket.async_write,发送消息的客户端代码将不会有同步结果来知道它是成功还是失败,因此不知道它是否应该重试发送(或将调用任何错误处理当消息发送失败时。)
提升文档说:
该函数用于将一定字节数的数据异步写入流。函数调用总是立即返回。异步操作将继续进行,直到满足以下条件之一:
- 提供的缓冲区中的所有数据都已写入。也就是说,传输的字节数等于缓冲区大小的总和。
- 发生错误。
回调方法将告诉您哪里有错误,以及实际写入的字节数(如果小于缓冲区大小,则表示错误)。
因此,您似乎需要保留任何消息的副本,直到您收到已发送的通知,以尝试重新发送或通知调用代码该消息未发送。
有没有办法向异步处理程序方法传递对正在发送的缓冲区/消息的引用?还是有更好的方法来维护一些正在写入的消息容器,然后在异步写入完成时将其弹出?