| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- import { Bonjour } from "bonjour-service"
- let bonjour: Bonjour | undefined
- let currentPort: number | undefined
- export function publish(port: number, domain?: string) {
- if (currentPort === port) return
- if (bonjour) unpublish()
- try {
- const host = domain ?? "kirincode.local"
- const name = `opencode-${port}`
- bonjour = new Bonjour()
- const service = bonjour.publish({
- name,
- type: "http",
- host,
- port,
- txt: { path: "/" },
- })
- service.on("error", () => {})
- currentPort = port
- } catch {
- if (bonjour) {
- try {
- bonjour.destroy()
- } catch {}
- }
- bonjour = undefined
- currentPort = undefined
- }
- }
- export function unpublish() {
- if (bonjour) {
- try {
- bonjour.unpublishAll()
- bonjour.destroy()
- } catch {}
- bonjour = undefined
- currentPort = undefined
- }
- }
- export * as MDNS from "./mdns"
|