我在cloudflare workers中创建了一个WebSocket,它在客户端连接Date.now()和断开连接时创建了一个变量connectime,然后计算连接时间差,并记录客户端在连接--ms后断开连接的时间,其中--是时间差。
addEventListener('fetch', (event) => {
event.respondWith(handleRequest(event.request))
})
async function handleRequest(request) {
const connecttime = Date.now();
const upgradeHeader = request.headers.get('Upgrade');
if (!upgradeHeader || upgradeHeader !== 'websocket') {
return new Response('Expected Upgrade: websocket', { status: 426 });
}
const webSocketPair = new WebSocketPair();
const [client, server] = Object.values(webSocketPair);
server.accept();
//Do something
server.addEventListener('close', event => {
const endtime = Date.now();
console.log(endtime);
const contime = endtime-connecttime;
console.log("client disconnected after a connection of " + contime + "ms");
})
问题是它返回0值;client disconnected after a connection of 0ms
1条答案
按热度按时间6ss1mwsb1#
这是Cloudflare Workers安全模型的设计和组成部分-来自文档:
辅助进程的设计使代码无法在本地测量其自身的执行时间。例如,Date.now当代码执行时,www.example.com()返回的值将被锁定在适当的位置。未提供其他计时器。
要获得完整的说明,我推荐以下文档页