Skip to content

Commit 56e5e4f

Browse files
authored
Merge pull request #19 from igowen/multiline-messages
add support for multiline data messages
2 parents cddf71d + 55e1281 commit 56e5e4f

File tree

2 files changed

+16
-2
lines changed

2 files changed

+16
-2
lines changed

src/encoder.rs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -117,8 +117,11 @@ impl Sender {
117117
}
118118

119119
// Write the data section, and end.
120-
let msg = format!("data:{}\n\n", data);
121-
self.inner_send(msg).await?;
120+
for line in data.lines() {
121+
let msg = format!("data:{}\n", line);
122+
self.inner_send(msg).await?;
123+
}
124+
self.inner_send("\n").await?;
122125

123126
Ok(())
124127
}

tests/encode.rs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,17 @@ async fn encode_retry() -> http_types::Result<()> {
9595
Ok(())
9696
}
9797

98+
#[async_std::test]
99+
async fn encode_multiline_message() -> http_types::Result<()> {
100+
let (sender, encoder) = encode();
101+
task::spawn(async move { sender.send("cats", "chashu\nnori", None).await });
102+
103+
let mut reader = decode(BufReader::new(encoder));
104+
let event = reader.next().await.unwrap()?;
105+
assert_message(&event, "cats", "chashu\nnori", None);
106+
Ok(())
107+
}
108+
98109
#[async_std::test]
99110
async fn dropping_encoder() -> http_types::Result<()> {
100111
let (sender, encoder) = encode();

0 commit comments

Comments
 (0)