feat(server): 优化 WebSocket 连接逻辑

This commit is contained in:
严浩
2025-10-16 13:36:06 +08:00
parent d3d5ebc66b
commit 39cc8354cc

View File

@@ -9,14 +9,17 @@ export default {
// API 路由处理 // API 路由处理
if (url.pathname.startsWith('/api/')) { if (url.pathname.startsWith('/api/')) {
await env.KV.put('events:api:last-call', `${new Date().toISOString()} ${request.method} ${url.pathname}`); await env.KV.put(
'events:api:last-call',
`${new Date().toISOString()} ${request.method} ${url.pathname}`,
);
// 获取所有可用的键名 // 获取所有可用的键名
const availableKeys = [ const availableKeys = [
'events:api:last-call', 'events:api:last-call',
'events:ws:connection', 'events:ws:connection',
'events:ws:message', 'events:ws:message',
'events:ws:disconnection' 'events:ws:disconnection',
]; ];
return Response.json({ return Response.json({
@@ -28,7 +31,7 @@ export default {
wsConnection: await env.KV.get('events:ws:connection'), wsConnection: await env.KV.get('events:ws:connection'),
wsMessage: await env.KV.get('events:ws:message'), wsMessage: await env.KV.get('events:ws:message'),
wsDisconnection: await env.KV.get('events:ws:disconnection'), wsDisconnection: await env.KV.get('events:ws:disconnection'),
} },
}); });
} }
@@ -50,7 +53,9 @@ export default {
await new Promise((r) => setTimeout(r, 250)); await new Promise((r) => setTimeout(r, 250));
} }
server.send(`欢迎连接到WebSocket服务器连接时间: ${new Date().toLocaleString('zh-CN', { timeZone: 'Asia/Shanghai' })}`); server.send(
`欢迎连接到WebSocket服务器连接时间: ${new Date().toLocaleString('zh-CN', { timeZone: 'Asia/Shanghai' })}`,
);
server.addEventListener('message', async (event) => { server.addEventListener('message', async (event) => {
console.log('收到客户端消息:', event.data); console.log('收到客户端消息:', event.data);
@@ -61,12 +66,15 @@ export default {
await new Promise((r) => setTimeout(r, 250)); await new Promise((r) => setTimeout(r, 250));
} }
server.send(`服务器收到: ${event.data} (时间: ${new Date().toLocaleString('zh-CN', { timeZone: 'Asia/Shanghai' })})`) server.send(
`服务器收到: ${event.data} (时间: ${new Date().toLocaleString('zh-CN', { timeZone: 'Asia/Shanghai' })})`,
);
}); });
server.addEventListener('close', () => { server.addEventListener('close', () => {
console.log('WebSocket连接关闭'); console.log('WebSocket连接关闭');
env.KV.put('events:ws:disconnection', `${new Date().toISOString()} ${url.pathname}`); env.KV.put('events:ws:disconnection', `${new Date().toISOString()} ${url.pathname}`);
server.close();
}); });
return new Response(null, { return new Response(null, {