| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- // 导入所需模块
- import { Hono } from 'hono'
- import { APIClient } from '@d8d-appcontainer/api'
- import debug from "debug"
- import { cors } from 'hono/cors'
- import { Server } from "socket.io"
- import httpServer from './app.tsx'
- import { setupSocketIO } from './routes_socketio.ts'
- // 初始化debug实例
- const log = {
- app: debug('app:server'),
- auth: debug('auth:server'),
- api: debug('api:server'),
- debug: debug('debug:server')
- }
- // 启用所有日志
- Object.values(log).forEach(logger => logger.enabled = true)
- // 初始化 API Client
- const getApiClient = async (workspaceKey: string, serverUrl?: string) => {
- try {
- log.api('正在初始化API Client实例')
-
- const apiClient = await APIClient.getInstance({
- scope: 'user',
- config: {
- serverUrl: serverUrl || Deno.env.get('SERVER_URL') || 'https://app-server.d8d.fun',
- workspaceKey: workspaceKey,
- type: 'http',
- }
- })
-
- log.api('API Client初始化成功')
- return apiClient
- } catch (error) {
- log.api('API Client初始化失败:', error)
- throw error
- }
- }
- // 初始化API Client
- // 注意:WORKSPACE_KEY 需要在 多八多(www.d8d.fun) 平台注册并开通工作空间后获取
- const workspaceKey = Deno.env.get('WORKSPACE_KEY') || ''
- if (!workspaceKey) {
- console.warn('未设置WORKSPACE_KEY,请前往 多八多(www.d8d.fun) 注册并开通工作空间以获取密钥')
- }
- const apiClient = await getApiClient(workspaceKey)
- // 创建Hono应用实例
- const app = new Hono()
- // 注册CORS中间件
- app.use('/*', cors())
- // 创建Socket.IO实例
- const io = new Server({
- cors: {
- origin: "*",
- methods: ["GET", "POST"],
- credentials: true
- }
- })
- setupSocketIO(io);
- // 动态加载并运行模板
- const runTemplate = async () => {
- try {
- // 创建基础app实例
- const moduleApp = new Hono()
- // 传入必要参数并初始化应用
- const appInstance = httpServer({
- apiClient: apiClient,
- app: moduleApp,
- moduleDir: './'
- })
- // 启动服务器
- Deno.serve({
- handler: io.handler(async (req) => {
- return await appInstance.fetch(req) || new Response(null, { status: 404 });
- }),
- port: 8080
- })
- console.log('应用已启动,监听端口: 8080')
- } catch (error) {
- console.error('模板加载失败:', error)
- }
- }
- // 执行模板
- runTemplate()
|