Browse Source

init

master
zhangjiming 5 months ago
commit
a33824fb9f
  1. 30
      .gitignore
  2. 1684
      package-lock.json
  3. 28
      package.json
  4. 26
      public/test.html
  5. 38
      src/index.ts
  6. 13
      tsconfig.json

30
.gitignore

@ -0,0 +1,30 @@
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*
lerna-debug.log*
node_modules
.DS_Store
dist
dist-ssr
coverage
*.local
/cypress/videos/
/cypress/screenshots/
# Editor directories and files
.vscode/*
!.vscode/extensions.json
.idea
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?
*.tsbuildinfo

1684
package-lock.json
File diff suppressed because it is too large
View File

28
package.json

@ -0,0 +1,28 @@
{
"name": "express-ts",
"version": "1.0.0",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"start": "ts-node src/index.ts",
"dev": "nodemon --watch 'src/**/*.ts' --exec 'ts-node' src/index.ts",
"build": "tsc",
"serve": "node dist/index.js"
},
"keywords": [],
"author": "",
"license": "ISC",
"description": "",
"dependencies": {
"express": "^5.0.1",
"ws": "^8.18.1"
},
"devDependencies": {
"@types/express": "^5.0.0",
"@types/node": "^22.13.4",
"@types/ws": "^8.5.14",
"nodemon": "^3.1.9",
"ts-node": "^10.9.2",
"typescript": "^5.7.3"
}
}

26
public/test.html

@ -0,0 +1,26 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
</head>
<body>
<script>
const ws = new WebSocket("ws://localhost:3003");
ws.onopen = () => {
console.log("Connected to server");
ws.send("Hello from client!");
};
ws.onmessage = event => {
console.log(`Message from server: ${event.data}`);
};
ws.onclose = () => {
console.log("Disconnected from server");
};
</script>
</body>
</html>

38
src/index.ts

@ -0,0 +1,38 @@
import express from "express";
import { Server } from "ws";
import http from 'http';
const app = express();
app.use(express.static('public'));
app.get("/", (req, res) => {
res.send("Hello World!");
});
const server = http.createServer(app);
// 在HTTP服务器上初始化WebSocket服务器
const wss = new Server({server});
wss.on('connection',(ws) => {
console.log('Client connected');
ws.send('Welcome to the WebSocket server!');
ws.on('message', (message) => {
console.log(`Received message: ${message}`);
// 广播收到的消息给所有连接的客户端
wss.clients.forEach(client => {
if (client.readyState === ws.OPEN) {
client.send(message.toString());
}
});
})
// 当连接关闭时触发
ws.on('close', () => {
console.log('Client disconnected');
});
})
// 监听端口
const PORT = process.env.PORT || 3003;
server.listen(PORT, () => {
console.log(`Server is listening on port ${PORT}`);
});

13
tsconfig.json

@ -0,0 +1,13 @@
{
"compilerOptions": {
"target": "ES6",
"module": "commonjs",
"strict": true,
"esModuleInterop": true,
"skipLibCheck": true,
"forceConsistentCasingInFileNames": true,
"outDir": "./dist"
},
"include": ["src/**/*.ts"],
"exclude": ["node_modules"]
}
Loading…
Cancel
Save