gpt4 book ai didi

javascript - Nodejs + Socket.IO - 如何在套接字关闭后获取传输的总字节数(读/写)

转载 作者:行者123 更新时间:2023-11-30 00:30:26 24 4
gpt4 key购买 nike

我有一个简单的 socket.io 客户端和服务器程序,在 node.js 上运行。客户端和服务器在断开连接(如聊天)之前在它们之间交换消息几分钟。

在套接字关闭后,是否有任何函数/方法可以用来获取传输(读/写)的总字节数?

目前我正在为客户端发送和接收的每条消息添加消息大小。但是,根据我的理解,在 socket.io 中,根据使用的协议(protocol)(websocket、xhr-polling 等),发送的最终有效负载的大小将因 header /包装大小而异。因此,仅添加消息字节并不能准确测量传输的字节数。

我可以使用像 Wireshark 这样的监控工具来获取这个值,但我更喜欢使用 javascript 实用程序来获取这个值。上网查了一下,没有给我合理的答案。

对于纯 websocket 连接,我能够使用以下函数获取此值:socket._socket.bytesReadsocket._socket.bytesWritten

感谢任何帮助!

最佳答案

从 socket v2.2.0 开始,我设法获得了这样的字节数据。只有当客户端关闭浏览器窗口且原因参数为传输错误时,才会指定这些问题。如果客户端使用 socket.close().disconnect() 或者服务器使用 .disconnect() 那么字节是 0.

socket.on('disconnect', (reason) => {
let symbs = Object.getOwnPropertySymbols(socket.conn.transport.socket._socket);

let bytesRead = socket.conn.transport.socket._socket[symbs[3]];
let bytesWritten = socket.conn.transport.socket._socket[symbs[4]];
});

关于javascript - Nodejs + Socket.IO - 如何在套接字关闭后获取传输的总字节数(读/写),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29788294/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com