Size: a a a

2021 October 21

MB

Mikail Bagishov in Rust Async
Типа, если у тебя требуется at least once семантика, то делать вот так абсолютно легально:
subscribe_to_notifications(callback);
if has_unread_notifications(...) {
   callback();
}
источник
2021 October 23

V

Vladyslav Batyrenko in Rust Async
https://docs.rs/tokio-tungstenite/0.15.0/tokio_tungstenite/struct.WebSocketStream.html#tymethod.poll_next

Ребят, а подскажите, подобный стрим может None вернуть на практике? Если подключение разорвано, это ведь всегда ошибка? Есть сценарии, когда Tcp стрим может просто взять и истощиться, вернув None?
источник

KR

Kai Ren in Rust Async
type Item = Result<Message, WsError>
какой None?
источник

V

Vladyslav Batyrenko in Rust Async
я линку скинул на poll_next
источник

KR

Kai Ren in Rust Async
в poll_next будет None всегда когда стрим завершается
источник

KR

Kai Ren in Rust Async
в случае ошибки разрыва соединения сначала прилетит Some(Err(…)) потом None и баиньки
источник

V

Vladyslav Batyrenko in Rust Async
а, точно, звучит логично
источник

V

Vladyslav Batyrenko in Rust Async
спасибо
источник

V

Vladyslav Batyrenko in Rust Async
на практике ж None не прилетит без предшествующей ошибки? (именно в случае этого WebSocketStream)
источник

KR

Kai Ren in Rust Async
зависит от реализации, по идее, если стрим завершается штатно, то прилетит
источник

KR

Kai Ren in Rust Async
но перед ним должен прилететь ws close message или типа того
источник

KR

Kai Ren in Rust Async
смотря что там они через стрим выстакивают наружу, могут его и у себя под капотом хэндлить
источник

KR

Kai Ren in Rust Async
Ага
источник

KR

Kai Ren in Rust Async
источник

V

Vladyslav Batyrenko in Rust Async
вроде на Message::Close у них тоже должен прилетать Error::ConnectionClosed
источник

V

Vladyslav Batyrenko in Rust Async
источник

KR

Kai Ren in Rust Async
там у вебсокета есть 2 способа закрыть соединение: normal и abnormal
источник

KR

Kai Ren in Rust Async
первое - это когда кто-то хочется закрыть, шлёт ws close message (ожидает вроде как ответ) и закрывает
источник

KR

Kai Ren in Rust Async
второе - это тупо на лету рвёт соединение
источник

KR

Kai Ren in Rust Async
Ага, да, вижу по ссылке
источник