test-node-sdl2/ws/server.ts
2025-04-19 13:42:24 +08:00

55 lines
1.3 KiB
TypeScript

// server.js
import express from 'express';
const app = express();
import http from 'http';
import { Server } from 'socket.io';
// const http = require('http').createServer(app);
const httpServer = http.createServer(app);
const io = new Server(httpServer);
// 提供静态网页
app.use(express.static('public'));
// 3D 数据生成逻辑
function generate3DData() {
return {
vertices: [
/* 3D 顶点数据 */
],
colors: [
/* 颜色数据 */
],
};
}
function generate3DData2() {
// 创建一个包含 1000 个随机点的数组
const points: any = [];
for (let i = 0; i < 1000; i++) {
points.push([Math.random() * 2000 - 1000, Math.random() * 2000 - 1000, Math.random() * 2000 - 1000]);
}
return {
vertices: points,
colors: points.map(() => [1, 1, 1, 1]),
};
}
// WebSocket 通信
io.on('connection', (socket) => {
console.log('客户端已连接');
// 每帧发送数据 (60fps)
// const interval = setInterval(() => {
// socket.emit('frame', generate3DData());
// }, 16);
const interval = setInterval(() => {
socket.emit('frame', generate3DData());
}, 2000);
socket.on('disconnect', () => {
clearInterval(interval);
});
});
httpServer.listen(3003, () => {
console.log('服务已启动: http://localhost:3003');
});