Don't send stuff before client rendered it
This commit is contained in:
parent
d7f606a036
commit
3ee735b7f2
@ -1,7 +1,7 @@
|
|||||||
|
|
||||||
use std::sync::Arc;
|
use std::sync::Arc;
|
||||||
|
|
||||||
use futures::SinkExt;
|
use futures::{SinkExt, StreamExt};
|
||||||
use serde_json::json;
|
use serde_json::json;
|
||||||
use tera::{Context, Tera};
|
use tera::{Context, Tera};
|
||||||
use tokio::sync::watch;
|
use tokio::sync::watch;
|
||||||
@ -53,12 +53,14 @@ struct WithTemplate {
|
|||||||
context: Context,
|
context: Context,
|
||||||
}
|
}
|
||||||
|
|
||||||
async fn watch_state(mut ws: WebSocket, mut state_channel: watch::Receiver<State>) {
|
async fn watch_state(ws: WebSocket, mut state_channel: watch::Receiver<State>) {
|
||||||
loop {
|
let (mut tx, mut rx) = ws.split();
|
||||||
|
|
||||||
|
while let Some(_) = rx.next().await {
|
||||||
let state = state_channel.recv().await;
|
let state = state_channel.recv().await;
|
||||||
|
|
||||||
let result = match state {
|
let result = match state {
|
||||||
Some(state) => ws.send(Message::text(json!(state).to_string())).await,
|
Some(state) => tx.send(Message::text(json!(state).to_string())).await,
|
||||||
None => break
|
None => break
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -19,6 +19,7 @@
|
|||||||
|
|
||||||
ws.onopen = function() {
|
ws.onopen = function() {
|
||||||
console.log("Connected");
|
console.log("Connected");
|
||||||
|
ws.send("MOAR");
|
||||||
}
|
}
|
||||||
|
|
||||||
ws.onmessage = function(e) {
|
ws.onmessage = function(e) {
|
||||||
@ -33,6 +34,7 @@
|
|||||||
li.innerText = `${ob.name} @ ${ob.x}, ${ob.y}`;
|
li.innerText = `${ob.name} @ ${ob.x}, ${ob.y}`;
|
||||||
ul.append(li);
|
ul.append(li);
|
||||||
}
|
}
|
||||||
|
ws.send("MOAR");
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
</body>
|
</body>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user