fune/third_party/rust/ws/examples/html_chat.rs
Bastien Orivel 8a3f3e785c Bug 1550903 - Part 2: Revendor dependencies. r=emilio,kats,froydnj
It was unhappy about the new LICENSE (fuchsia-cprng) but it's the same
as the other fuschia crates. Since I don't think this is used at build
time but has the same license as the other fuschia crates, I put it in
the RUNTIME_LICENSE_PACKAGE_WHITELIST list. I also removed sha1 from
that list as it's not used anymore

Differential Revision: https://phabricator.services.mozilla.com/D30746

--HG--
rename : third_party/rust/httparse/Cargo.toml => third_party/rust/autocfg/Cargo.toml
rename : third_party/rust/rand/LICENSE-APACHE => third_party/rust/autocfg/LICENSE-APACHE
rename : third_party/rust/rand/LICENSE-MIT => third_party/rust/autocfg/LICENSE-MIT
rename : third_party/rust/httparse/Cargo.toml => third_party/rust/cloudabi/Cargo.toml
rename : third_party/rust/httparse/Cargo.toml => third_party/rust/fuchsia-cprng/Cargo.toml
rename : third_party/rust/sha1/LICENSE => third_party/rust/fuchsia-cprng/LICENSE
rename : third_party/rust/rand/LICENSE-APACHE => third_party/rust/mio-extras/LICENSE-APACHE
rename : third_party/rust/rand/LICENSE-MIT => third_party/rust/mio-extras/LICENSE-MIT
rename : third_party/rust/rand/.cargo-checksum.json => third_party/rust/rand-0.4.3/.cargo-checksum.json
rename : third_party/rust/rand/CHANGELOG.md => third_party/rust/rand-0.4.3/CHANGELOG.md
rename : third_party/rust/rand/Cargo.toml => third_party/rust/rand-0.4.3/Cargo.toml
rename : third_party/rust/rand/LICENSE-APACHE => third_party/rust/rand-0.4.3/LICENSE-APACHE
rename : third_party/rust/rand/LICENSE-MIT => third_party/rust/rand-0.4.3/LICENSE-MIT
rename : third_party/rust/rand/README.md => third_party/rust/rand-0.4.3/README.md
rename : third_party/rust/rand/appveyor.yml => third_party/rust/rand-0.4.3/appveyor.yml
rename : third_party/rust/rand/benches/bench.rs => third_party/rust/rand-0.4.3/benches/bench.rs
rename : third_party/rust/rand/benches/distributions/exponential.rs => third_party/rust/rand-0.4.3/benches/distributions/exponential.rs
rename : third_party/rust/rand/benches/distributions/gamma.rs => third_party/rust/rand-0.4.3/benches/distributions/gamma.rs
rename : third_party/rust/rand/benches/distributions/mod.rs => third_party/rust/rand-0.4.3/benches/distributions/mod.rs
rename : third_party/rust/rand/benches/distributions/normal.rs => third_party/rust/rand-0.4.3/benches/distributions/normal.rs
rename : third_party/rust/rand/benches/generators.rs => third_party/rust/rand-0.4.3/benches/generators.rs
rename : third_party/rust/rand/benches/misc.rs => third_party/rust/rand-0.4.3/benches/misc.rs
rename : third_party/rust/rand/src/distributions/exponential.rs => third_party/rust/rand-0.4.3/src/distributions/exponential.rs
rename : third_party/rust/rand/src/distributions/gamma.rs => third_party/rust/rand-0.4.3/src/distributions/gamma.rs
rename : third_party/rust/rand/src/distributions/mod.rs => third_party/rust/rand-0.4.3/src/distributions/mod.rs
rename : third_party/rust/rand/src/distributions/normal.rs => third_party/rust/rand-0.4.3/src/distributions/normal.rs
rename : third_party/rust/rand/src/distributions/range.rs => third_party/rust/rand-0.4.3/src/distributions/range.rs
rename : third_party/rust/rand/src/distributions/ziggurat_tables.rs => third_party/rust/rand-0.4.3/src/distributions/ziggurat_tables.rs
rename : third_party/rust/rand/src/jitter.rs => third_party/rust/rand-0.4.3/src/jitter.rs
rename : third_party/rust/rand/src/lib.rs => third_party/rust/rand-0.4.3/src/lib.rs
rename : third_party/rust/rand/src/os.rs => third_party/rust/rand-0.4.3/src/os.rs
rename : third_party/rust/rand/src/prng/chacha.rs => third_party/rust/rand-0.4.3/src/prng/chacha.rs
rename : third_party/rust/rand/src/prng/isaac.rs => third_party/rust/rand-0.4.3/src/prng/isaac.rs
rename : third_party/rust/rand/src/prng/isaac64.rs => third_party/rust/rand-0.4.3/src/prng/isaac64.rs
rename : third_party/rust/rand/src/prng/mod.rs => third_party/rust/rand-0.4.3/src/prng/mod.rs
rename : third_party/rust/rand/src/prng/xorshift.rs => third_party/rust/rand-0.4.3/src/prng/xorshift.rs
rename : third_party/rust/rand/src/rand_impls.rs => third_party/rust/rand-0.4.3/src/rand_impls.rs
rename : third_party/rust/rand/src/read.rs => third_party/rust/rand-0.4.3/src/read.rs
rename : third_party/rust/rand/src/reseeding.rs => third_party/rust/rand-0.4.3/src/reseeding.rs
rename : third_party/rust/rand/src/seq.rs => third_party/rust/rand-0.4.3/src/seq.rs
rename : third_party/rust/rand/utils/ziggurat_tables.py => third_party/rust/rand-0.4.3/utils/ziggurat_tables.py
rename : third_party/rust/rand/LICENSE-APACHE => third_party/rust/rand_chacha/LICENSE-APACHE
rename : third_party/rust/rand/LICENSE-MIT => third_party/rust/rand_chacha/LICENSE-MIT
rename : third_party/rust/rand/LICENSE-APACHE => third_party/rust/rand_core-0.3.1/LICENSE-APACHE
rename : third_party/rust/rand/LICENSE-MIT => third_party/rust/rand_core-0.3.1/LICENSE-MIT
rename : third_party/rust/rand/LICENSE-APACHE => third_party/rust/rand_core/LICENSE-APACHE
rename : third_party/rust/rand/LICENSE-MIT => third_party/rust/rand_core/LICENSE-MIT
rename : third_party/rust/httparse/Cargo.toml => third_party/rust/rand_hc/Cargo.toml
rename : third_party/rust/rand/LICENSE-APACHE => third_party/rust/rand_hc/LICENSE-APACHE
rename : third_party/rust/rand/LICENSE-MIT => third_party/rust/rand_hc/LICENSE-MIT
rename : third_party/rust/rand/LICENSE-APACHE => third_party/rust/rand_isaac/LICENSE-APACHE
rename : third_party/rust/rand/LICENSE-MIT => third_party/rust/rand_isaac/LICENSE-MIT
rename : third_party/rust/rand/LICENSE-APACHE => third_party/rust/rand_jitter/LICENSE-APACHE
rename : third_party/rust/rand/LICENSE-MIT => third_party/rust/rand_jitter/LICENSE-MIT
rename : third_party/rust/rand/src/jitter.rs => third_party/rust/rand_jitter/src/lib.rs
rename : third_party/rust/rand/LICENSE-APACHE => third_party/rust/rand_os/LICENSE-APACHE
rename : third_party/rust/rand/LICENSE-MIT => third_party/rust/rand_os/LICENSE-MIT
rename : third_party/rust/rand/LICENSE-APACHE => third_party/rust/rand_pcg/LICENSE-APACHE
rename : third_party/rust/rand/LICENSE-MIT => third_party/rust/rand_pcg/LICENSE-MIT
rename : third_party/rust/rand/LICENSE-APACHE => third_party/rust/rand_xorshift/LICENSE-APACHE
rename : third_party/rust/rand/LICENSE-MIT => third_party/rust/rand_xorshift/LICENSE-MIT
rename : third_party/rust/httparse/Cargo.toml => third_party/rust/rdrand/Cargo.toml
rename : third_party/rust/rand/LICENSE-APACHE => third_party/rust/sha-1/LICENSE-APACHE
rename : third_party/rust/rand/LICENSE-MIT => third_party/rust/sha-1/LICENSE-MIT
extra : moz-landing-system : lando
2019-05-18 13:39:31 +00:00

66 lines
1.9 KiB
Rust

/// An example of a chat web application server
extern crate ws;
use ws::{listen, Handler, Message, Request, Response, Result, Sender};
// This can be read from a file
static INDEX_HTML: &'static [u8] = br#"
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
</head>
<body>
<pre id="messages"></pre>
<form id="form">
<input type="text" id="msg">
<input type="submit" value="Send">
</form>
<script>
var socket = new WebSocket("ws://" + window.location.host + "/ws");
socket.onmessage = function (event) {
var messages = document.getElementById("messages");
messages.append(event.data + "\n");
};
var form = document.getElementById("form");
form.addEventListener('submit', function (event) {
event.preventDefault();
var input = document.getElementById("msg");
socket.send(input.value);
input.value = "";
});
</script>
</body>
</html>
"#;
// Server web application handler
struct Server {
out: Sender,
}
impl Handler for Server {
//
fn on_request(&mut self, req: &Request) -> Result<(Response)> {
// Using multiple handlers is better (see router example)
match req.resource() {
// The default trait implementation
"/ws" => Response::from_request(req),
// Create a custom response
"/" => Ok(Response::new(200, "OK", INDEX_HTML.to_vec())),
_ => Ok(Response::new(404, "Not Found", b"404 - Not Found".to_vec())),
}
}
// Handle messages recieved in the websocket (in this case, only on /ws)
fn on_message(&mut self, msg: Message) -> Result<()> {
// Broadcast to all connections
self.out.broadcast(msg)
}
}
fn main() {
// Listen on an address and call the closure for each connection
listen("127.0.0.1:8000", |out| Server { out }).unwrap()
}