55 lines
1.3 KiB
TypeScript
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');
|
|
});
|