You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tauri-plugins-workspace/plugins/websocket/examples/tauri-app/src/main.ts

59 lines
1.5 KiB

// Copyright 2019-2023 Tauri Programme within The Commons Conservancy
// SPDX-License-Identifier: Apache-2.0
// SPDX-License-Identifier: MIT
import WebSocket from "tauri-plugin-websocket-api";
import "./style.css";
let ws: WebSocket;
document.addEventListener("DOMContentLoaded", async () => {
document.querySelector("#send")?.addEventListener("click", send);
document.querySelector("#disconnect")?.addEventListener("click", disconnect);
await connect();
});
function _updateResponse(returnValue: unknown) {
const msg = document.createElement("p");
msg.textContent =
typeof returnValue === "string" ? returnValue : JSON.stringify(returnValue);
document.querySelector("#response-container")?.appendChild(msg);
}
async function connect() {
try {
ws = await WebSocket.connect("ws://127.0.0.1:8080").then((r) => {
_updateResponse("Connected");
return r;
});
} catch (e) {
_updateResponse(e);
}
ws.addListener(_updateResponse);
}
function send() {
ws.send(document.querySelector("#msg-input")?.textContent || "")
.then(() => {
_updateResponse("Message sent");
})
.catch(_updateResponse);
}
function disconnect() {
ws.disconnect()
.then(() => {
_updateResponse("Disconnected");
})
.catch(_updateResponse);
}
document.querySelector<HTMLDivElement>("#app")!.innerHTML = `
<div>
<input type="text" />
<button id="send">send</button>
<button id="disconnect">disconnect</button>
<div id="response-container"></div>
</div>
`;