Cloudflare websocket 仅返回 Date.now() 的一个值

Cloudflare websocket returns only one value of Date.now()

提问人:Priyansh Yadav 提问时间:11/8/2022 更新时间:11/9/2022 访问量:290

问:

好的,所以我在 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

JavaScript WebSocket Cloudflare

评论


答:

0赞 Paolo Tagliaferri 11/9/2022 #1

这是设计使然,也是 Cloudflare Workers 安全模型的一部分 - 来自文档:

Workers 旨在使代码无法测量自己的 本地执行时间。例如,Date.now() 返回的值 在执行代码时锁定在原位。没有其他计时器 提供。

有关完整解释,我建议使用以下文档页面