docs.rs failed to build lobby-0.0.1
Please check the build logs for more information.
See Builds for ideas on how to fix a failed build, or Metadata for how to configure docs.rs builds.
If you believe this is docs.rs' fault, open an issue.
Please check the build logs for more information.
See Builds for ideas on how to fix a failed build, or Metadata for how to configure docs.rs builds.
If you believe this is docs.rs' fault, open an issue.
TCP server implementation suitable for chat rooms and games.
The lobby
crate is designed to provide a convenient way to spin up a server
which automatically keeps track of connected clients and provides facilities
for messaging them and polling them for data.
Each client is represented using a unique integer id, and id's are recycled as clients disconnect from the server.
Here's how you spin up a lobby
server and poll the clients for data:
extern crate lobby;
use lobby::{Lobby, ScanResult};
let server = Lobby::new("127.0.0.1:8080").unwrap();
loop {
server.scan(|id, result| {
let name = server.name(id).unwrap();
match result {
ScanResult::Connected => println!("{} has connected.", name),
ScanResult::Data(data) => println!("{} sent {} bytes of data.", name, data.len()),
ScanResult::IoError(err) => println!("{} ran into an IO error: {}", name, err),
ScanResult::Disconnected => println!("{} has disconnected.", name),
}
});
}
Clients can then connect to the server using TcpStream::connect()
. The first
thing a client should do after establishing the connection is send a UTF-8 encoded
name followed by a 0 byte to indicate its termination. After that, all further
data sent will be queued up to be scanned by the server.