建立連接(220服務就緒)後,SMTP服務器應顯示歡迎消息,這是客戶端開始發送命令的信號。這似乎與tokio-proto的請求 - 響應範式相沖突。如何在客戶端連接到tokio-proto服務器時顯示歡迎消息/橫幅?
我可以想象協議可以完全顛倒,如服務器發送請求和客戶端響應(不建議使用TURN),但目前我只關心連接時的歡迎消息,又名橫幅。之後,客戶端請求=>服務器響應將被維護。
我一直試圖弄清楚在哪裏掛鉤,但bind_server
,bind_transport
對我來說超級神祕。我是否需要實施運輸?
我在編解碼器的decode
方法中有這個。問題是decode
方法不被調用,除非有數據可用於解碼哪種類型是有意義的。我期望有一些連接初始化方法可以掛鉤,但我什麼也沒找到。
fn decode(&mut self, buf: &mut BytesMut) -> Result {
if !self.initialized {
println!(
"new connection from {:?} to {:?}",
self.peer_addr,
self.local_addr
);
self.requests.push(SmtpCommand::Connect {
local_addr: self.local_addr,
peer_addr: self.peer_addr,
});
self.initialized = true;
}
//... snip
match self.requests.is_empty() {
true => Ok(None),
false => Ok(Some(self.requests.remove(0))),
}
}
我的和我也opened an issue with tokio-proto。