branch: main
socket.rs
1122 bytesRaw
use crate::SomeSharedData;
use tokio::io::AsyncReadExt;
use tokio::io::AsyncWriteExt;
use worker::{ConnectionBuilder, Env, Error, Request, Response, Result};
#[worker::send]
pub async fn handle_socket_failed(
_req: Request,
_env: Env,
_data: SomeSharedData,
) -> Result<Response> {
let socket = ConnectionBuilder::new().connect("127.0.0.1", 25000)?;
match socket.opened().await {
Ok(_) => {
return Err(Error::RustError(
"Socket should have failed to open.".to_owned(),
))
}
Err(e) => Response::ok(format!("{e:?}")),
}
}
#[worker::send]
pub async fn handle_socket_read(
_req: Request,
_env: Env,
_data: SomeSharedData,
) -> Result<Response> {
let mut socket = ConnectionBuilder::new().connect("127.0.0.1", 8080)?;
socket.opened().await?;
{
socket.write_all(b"ping").await?;
}
let mut response = [0; 4];
{
socket.read_exact(&mut response).await?;
}
assert_eq!(&response, b"ping");
socket.close().await?;
socket.closed().await?;
Response::ok("success")
}