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>
`