Struct websocket::server::Server
[−]
[src]
pub struct Server<'a> { // some fields omitted }
Represents a WebSocket server which can work with either normal (non-secure) connections, or secure WebSocket connections.
This is a convenient way to implement WebSocket servers, however it is possible to use any sendable Reader and Writer to obtain a WebSocketClient, so if needed, an alternative server implementation can be used.
Non-secure Servers
extern crate websocket; use std::thread; use websocket::{Server, Message}; let server = Server::bind("127.0.0.1:1234").unwrap(); for connection in server { // Spawn a new thread for each connection. thread::spawn(move || { let request = connection.unwrap().read_request().unwrap(); // Get the request let response = request.accept(); // Form a response let mut client = response.send().unwrap(); // Send the response let message = Message::text("Hello, client!"); let _ = client.send_message(&message); // ... }); }
Secure Servers
extern crate websocket; extern crate openssl; use std::thread; use std::path::Path; use websocket::{Server, Message}; use openssl::ssl::{SslContext, SslMethod}; use openssl::x509::X509FileType; let mut context = SslContext::new(SslMethod::Tlsv1).unwrap(); let _ = context.set_certificate_file(&(Path::new("cert.pem")), X509FileType::PEM); let _ = context.set_private_key_file(&(Path::new("key.pem")), X509FileType::PEM); let server = Server::bind_secure("127.0.0.1:1234", &context).unwrap(); for connection in server { // Spawn a new thread for each connection. thread::spawn(move || { let request = connection.unwrap().read_request().unwrap(); // Get the request let response = request.accept(); // Form a response let mut client = response.send().unwrap(); // Send the response let message = Message::text("Hello, client!"); let _ = client.send_message(&message); // ... }); }
Methods
impl<'a> Server<'a>
fn bind<T: ToSocketAddrs>(addr: T) -> Result<Server<'a>>
Bind this Server to this socket
fn bind_secure<T: ToSocketAddrs>(addr: T, context: &'a SslContext) -> Result<Server<'a>>
Bind this Server to this socket, utilising the given SslContext
fn local_addr(&self) -> Result<SocketAddr>
Get the socket address of this server
fn try_clone(&self) -> Result<Server<'a>>
Create a new independently owned handle to the underlying socket.
fn accept(&mut self) -> Result<Connection<WebSocketStream, WebSocketStream>>
Wait for and accept an incoming WebSocket connection, returning a WebSocketRequest