mirror of
https://github.com/Dangoware/confetti-box.git
synced 2025-04-19 15:22:57 -05:00
Made server return upload progress as binary instead of string
This commit is contained in:
parent
a3071b4f26
commit
b76ebd339c
2 changed files with 11 additions and 5 deletions
|
@ -307,7 +307,7 @@ pub async fn websocket_upload(
|
||||||
|
|
||||||
hasher.update(&message);
|
hasher.update(&message);
|
||||||
|
|
||||||
stream.send(rocket_ws::Message::Text(json::serde_json::ser::to_string(&offset).unwrap())).await.unwrap();
|
stream.send(rocket_ws::Message::binary(offset.to_le_bytes().as_slice())).await.unwrap();
|
||||||
|
|
||||||
file.write_all(&message).await.unwrap();
|
file.write_all(&message).await.unwrap();
|
||||||
|
|
||||||
|
@ -347,6 +347,7 @@ pub async fn websocket_upload(
|
||||||
file.flush().await.unwrap();
|
file.flush().await.unwrap();
|
||||||
|
|
||||||
stream.send(rocket_ws::Message::Text(json::serde_json::ser::to_string(&constructed_file).unwrap())).await?;
|
stream.send(rocket_ws::Message::Text(json::serde_json::ser::to_string(&constructed_file).unwrap())).await?;
|
||||||
|
stream.close(None).await?;
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
})))
|
})))
|
||||||
|
|
|
@ -220,6 +220,7 @@ async function uploadFileWebsocket(file, duration, maxSize) {
|
||||||
new_uri += "//" + loc.host;
|
new_uri += "//" + loc.host;
|
||||||
new_uri += "/upload/websocket?name=" + file.name +"&size=" + file.size + "&duration=" + parseInt(duration);
|
new_uri += "/upload/websocket?name=" + file.name +"&size=" + file.size + "&duration=" + parseInt(duration);
|
||||||
const socket = new WebSocket(new_uri);
|
const socket = new WebSocket(new_uri);
|
||||||
|
socket.binaryType = "arraybuffer";
|
||||||
|
|
||||||
const chunkSize = 5_000_000;
|
const chunkSize = 5_000_000;
|
||||||
socket.addEventListener("open", (_event) => {
|
socket.addEventListener("open", (_event) => {
|
||||||
|
@ -235,14 +236,18 @@ async function uploadFileWebsocket(file, duration, maxSize) {
|
||||||
|
|
||||||
return new Promise(function(resolve, _reject) {
|
return new Promise(function(resolve, _reject) {
|
||||||
socket.addEventListener("message", (event) => {
|
socket.addEventListener("message", (event) => {
|
||||||
const response = JSON.parse(event.data);
|
if (event.data instanceof ArrayBuffer) {
|
||||||
if (response.mmid == null) {
|
const view = new DataView(event.data);
|
||||||
const progress = parseInt(response);
|
console.log(view.getBigUint64(0, true));
|
||||||
|
const progress = parseInt(view.getBigUint64(0, true));
|
||||||
uploadProgressWebsocket(progress, progressBar, progressText, file.size);
|
uploadProgressWebsocket(progress, progressBar, progressText, file.size);
|
||||||
} else {
|
} else {
|
||||||
// It's so over
|
// It's so over
|
||||||
socket.close();
|
if (!socket.CLOSED) {
|
||||||
|
socket.close();
|
||||||
|
}
|
||||||
|
|
||||||
|
const response = JSON.parse(event.data);
|
||||||
uploadComplete(response, 200, progressBar, progressText, linkRow);
|
uploadComplete(response, 200, progressBar, progressText, linkRow);
|
||||||
resolve();
|
resolve();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue