websocket 0.17.0

A WebSocket (RFC6455) library for Rust.
Documentation
extern crate websocket;

use std::thread;
use std::str::from_utf8;
use websocket::{Server, Message, Sender, Receiver};
use websocket::message::Type;

fn main() {
	let addr = "127.0.0.1:9002".to_string();

	let server = Server::bind(&addr[..]).unwrap();

	for connection in server {
		thread::spawn(move || {
			let request = connection.unwrap().read_request().unwrap();
			request.validate().unwrap();
			let response = request.accept();
			let (mut sender, mut receiver) = response.send().unwrap().split();

			for message in receiver.incoming_messages() {
				let message: Message = match message {
					Ok(message) => message,
					Err(e) => {
						println!("{:?}", e);
						let _ = sender.send_message(&Message::close());
						return;
					}
				};

				match message.opcode {
					Type::Text => {
                        let response = Message::text(from_utf8(&*message.payload).unwrap());
                        sender.send_message(&response).unwrap()
                    },
					Type::Binary => sender.send_message(&Message::binary(message.payload)).unwrap(),
					Type::Close => {
						let _ = sender.send_message(&Message::close());
						return;
					}
					Type::Ping => {
						let message = Message::pong(message.payload);
						sender.send_message(&message).unwrap();
					}
					_ => (),
				}
			}
		});
	}
}