TripoSplat-WebGPU / examples /direct /model-config-server.mjs
Yosun's picture
Deploy TripoSplat WebGPU demo
31c7d49 verified
Raw
History Blame Contribute Delete
1.39 kB
import { createServer } from 'node:http'
import { pathToFileURL } from 'node:url'
/**
* Optional same-origin configuration endpoint for server-rendered platforms.
* It exposes a public CDN URL only; image generation still runs in the browser.
*/
export function createTripoSplatConfigHandler({
modelBaseUrl = process.env.TRIPOSPLAT_MODEL_BASE_URL,
} = {}) {
if (!modelBaseUrl) {
throw new Error('Set TRIPOSPLAT_MODEL_BASE_URL to the public model directory URL.')
}
const body = JSON.stringify({
modelBaseUrl: new URL(modelBaseUrl).href,
manifestUrl: 'manifest.json',
})
return function handleTripoSplatConfig(request, response) {
if (request.method !== 'GET' || request.url !== '/api/triposplat-config') {
response.writeHead(404).end('Not found')
return
}
response.writeHead(200, {
'cache-control': 'public, max-age=300',
'content-length': Buffer.byteLength(body),
'content-type': 'application/json; charset=utf-8',
})
response.end(body)
}
}
const isMain = process.argv[1]
&& import.meta.url === pathToFileURL(process.argv[1]).href
if (isMain) {
const port = Number.parseInt(process.env.PORT ?? '3000', 10)
const server = createServer(createTripoSplatConfigHandler())
server.listen(port, '127.0.0.1', () => {
console.info(`TripoSplat config: http://127.0.0.1:${port}/api/triposplat-config`)
})
}