Add support for websockets (#3)

Basically a copy/paste of whats in warp.

Example usage:

```rust
use tower_web::{prelude::*, ws::{ws, WebSocket}};

let app = route("/ws", ws(handle_socket));

async fn handle_socket(mut socket: WebSocket) {
    while let Some(msg) = socket.recv().await {
        let msg = msg.unwrap();
        socket.send(msg).await.unwrap();
    }
}
```
This commit is contained in:
David Pedersen
2021-06-12 20:50:30 +02:00
committed by GitHub
parent 002e3f92b3
commit c9c507aece
9 changed files with 518 additions and 2 deletions
+5 -1
View File
@@ -770,12 +770,16 @@ where
fn strip_prefix(uri: &Uri, prefix: &str) -> Uri {
let path_and_query = if let Some(path_and_query) = uri.path_and_query() {
let new_path = if let Some(path) = path_and_query.path().strip_prefix(prefix) {
let mut new_path = if let Some(path) = path_and_query.path().strip_prefix(prefix) {
path
} else {
path_and_query.path()
};
if new_path.is_empty() {
new_path = "/";
}
if let Some(query) = path_and_query.query() {
Some(
format!("{}?{}", new_path, query)