Migrate to the tokio-io (fixes #1)
parent
b79698b7ce
commit
b2b77893c2
@ -0,0 +1,53 @@ |
||||
extern crate futures; |
||||
extern crate tokio_core; |
||||
extern crate tokio_tungstenite; |
||||
extern crate url; |
||||
|
||||
use std::io; |
||||
|
||||
use futures::{Future, Stream}; |
||||
use tokio_core::net::{TcpStream, TcpListener}; |
||||
use tokio_core::reactor::Core; |
||||
use tokio_tungstenite::{client_async, accept_async}; |
||||
|
||||
#[test] |
||||
fn handshakes() { |
||||
use std::sync::mpsc::channel; |
||||
use std::thread; |
||||
|
||||
let (tx, rx) = channel(); |
||||
|
||||
thread::spawn(move || { |
||||
let mut core = Core::new().unwrap(); |
||||
let handle = core.handle(); |
||||
let address = "0.0.0.0:12345".parse().unwrap(); |
||||
let listener = TcpListener::bind(&address, &handle).unwrap(); |
||||
let connections = listener.incoming(); |
||||
tx.send(()).unwrap(); |
||||
let handshakes = connections.and_then(|(connection, _)| { |
||||
accept_async(connection) |
||||
.map_err(|e| io::Error::new(io::ErrorKind::Other, e)) |
||||
}); |
||||
let server = handshakes.for_each(|_| { |
||||
Ok(()) |
||||
}); |
||||
|
||||
core.run(server).unwrap(); |
||||
}); |
||||
|
||||
rx.recv().unwrap(); |
||||
let mut core = Core::new().unwrap(); |
||||
let handle = core.handle(); |
||||
let address = "0.0.0.0:12345".parse().unwrap(); |
||||
let tcp = TcpStream::connect(&address, &handle); |
||||
let handshake = tcp.and_then(|stream| { |
||||
let url = url::Url::parse("ws://localhost:12345/").unwrap(); |
||||
client_async(url, stream) |
||||
.map_err(|e| io::Error::new(io::ErrorKind::Other, e)) |
||||
}); |
||||
let client = handshake.and_then(|_| { |
||||
Ok(()) |
||||
}); |
||||
core.run(client).unwrap(); |
||||
} |
||||
|
Loading…
Reference in new issue