import { Opaque, Writable } from "@hazae41/binary"
import { fetch } from "@hazae41/fleche"
function example(stream: ReadableWritablePair<Opaque, Writable>) {
/**
* Fetch using the underlying TCP or TLS stream
*/
const res = await fetch("https://example.com", { stream })
if (!res.ok)
throw new Error(await res.text())
return await res.json()
}
import { Opaque, Writable } from "@hazae41/binary"
import { WebSocket } from "@hazae41/fleche"
function example(stream: ReadableWritablePair<Opaque, Writable>) {
const socket = new WebSocket("wss://example.com")
/**
* Pipe TCP or TLS input to WebSocket input
*/
stream.readable
.pipeTo(socket.inner.writable, { preventCancel: true })
.catch(() => {})
/**
* Pipe WebSocket output to TCP or TLS output
*/
socket.inner.readable
.pipeTo(stream.writable, { preventClose: true, preventAbort: true })
.catch(() => {})
await new Promise((ok, err) => {
socket.addEventListener("open", ok)
socket.addEventListener("error", err)
})
socket.addEventListener("message", e => console.log(e.data))
socket.send("Hello world")
}