refactor: unwrap MDNS namespace + self-reexport (#22953)
This commit is contained in:
parent
3d3e50ebf0
commit
b41b0e3d2d
1 changed files with 49 additions and 49 deletions
|
|
@ -3,58 +3,58 @@ import { Bonjour } from "bonjour-service"
|
||||||
|
|
||||||
const log = Log.create({ service: "mdns" })
|
const log = Log.create({ service: "mdns" })
|
||||||
|
|
||||||
export namespace MDNS {
|
let bonjour: Bonjour | undefined
|
||||||
let bonjour: Bonjour | undefined
|
let currentPort: number | undefined
|
||||||
let currentPort: number | undefined
|
|
||||||
|
|
||||||
export function publish(port: number, domain?: string) {
|
export function publish(port: number, domain?: string) {
|
||||||
if (currentPort === port) return
|
if (currentPort === port) return
|
||||||
if (bonjour) unpublish()
|
if (bonjour) unpublish()
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const host = domain ?? "opencode.local"
|
const host = domain ?? "opencode.local"
|
||||||
const name = `opencode-${port}`
|
const name = `opencode-${port}`
|
||||||
bonjour = new Bonjour()
|
bonjour = new Bonjour()
|
||||||
const service = bonjour.publish({
|
const service = bonjour.publish({
|
||||||
name,
|
name,
|
||||||
type: "http",
|
type: "http",
|
||||||
host,
|
host,
|
||||||
port,
|
port,
|
||||||
txt: { path: "/" },
|
txt: { path: "/" },
|
||||||
})
|
})
|
||||||
|
|
||||||
service.on("up", () => {
|
service.on("up", () => {
|
||||||
log.info("mDNS service published", { name, port })
|
log.info("mDNS service published", { name, port })
|
||||||
})
|
})
|
||||||
|
|
||||||
service.on("error", (err) => {
|
service.on("error", (err) => {
|
||||||
log.error("mDNS service error", { error: err })
|
log.error("mDNS service error", { error: err })
|
||||||
})
|
})
|
||||||
|
|
||||||
currentPort = port
|
currentPort = port
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
log.error("mDNS publish failed", { error: err })
|
log.error("mDNS publish failed", { error: err })
|
||||||
if (bonjour) {
|
|
||||||
try {
|
|
||||||
bonjour.destroy()
|
|
||||||
} catch {}
|
|
||||||
}
|
|
||||||
bonjour = undefined
|
|
||||||
currentPort = undefined
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
export function unpublish() {
|
|
||||||
if (bonjour) {
|
if (bonjour) {
|
||||||
try {
|
try {
|
||||||
bonjour.unpublishAll()
|
|
||||||
bonjour.destroy()
|
bonjour.destroy()
|
||||||
} catch (err) {
|
} catch {}
|
||||||
log.error("mDNS unpublish failed", { error: err })
|
|
||||||
}
|
|
||||||
bonjour = undefined
|
|
||||||
currentPort = undefined
|
|
||||||
log.info("mDNS service unpublished")
|
|
||||||
}
|
}
|
||||||
|
bonjour = undefined
|
||||||
|
currentPort = undefined
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function unpublish() {
|
||||||
|
if (bonjour) {
|
||||||
|
try {
|
||||||
|
bonjour.unpublishAll()
|
||||||
|
bonjour.destroy()
|
||||||
|
} catch (err) {
|
||||||
|
log.error("mDNS unpublish failed", { error: err })
|
||||||
|
}
|
||||||
|
bonjour = undefined
|
||||||
|
currentPort = undefined
|
||||||
|
log.info("mDNS service unpublished")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export * as MDNS from "./mdns"
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue