Cloudflare WebSocket只返回一个值Date.now()

fquxozlt  于 2022-11-11  发布在  其他
关注(0)|答案(1)|浏览(201)

我在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

6ss1mwsb

6ss1mwsb1#

这是Cloudflare Workers安全模型的设计和组成部分-来自文档:
辅助进程的设计使代码无法在本地测量其自身的执行时间。例如,Date.now当代码执行时,www.example.com()返回的值将被锁定在适当的位置。未提供其他计时器。
要获得完整的说明,我推荐以下文档页

相关问题