Javascript 在WebSocket.send()之后修改缓冲区是否安全?

Javascript 在WebSocket.send()之后修改缓冲区是否安全?,javascript,websocket,typedarray,Javascript,Websocket,Typedarray,WebSocket.send()是否复制传递的数组缓冲区,以便以后可以安全地修改它?说: var a = new Uint8Array([1, 2, 3]); websocket.send(a); a[2] = 4; 即使套接字已满且缓冲区未立即发送,这是否安全?是的,在WebSocket.send()之后修改缓冲区是安全的 引用套接字的单独缓冲区,因此数据可以立即发送或复制到单独的缓冲区中 发送(数据)方法使用连接传输数据。如果 readyState属性正在连接,它必须引发无效的\u状态\u

WebSocket.send()是否复制传递的数组缓冲区,以便以后可以安全地修改它?说:

var a = new Uint8Array([1, 2, 3]);
websocket.send(a);
a[2] = 4;

即使套接字已满且缓冲区未立即发送,这是否安全?

是的,在
WebSocket.send()之后修改缓冲区是安全的

引用套接字的单独缓冲区,因此数据可以立即发送或复制到单独的缓冲区中

发送(数据)方法使用连接传输数据。如果 readyState属性正在连接,它必须引发无效的\u状态\u错误 例外。如果数据参数有任何未配对的代理项,则 必须引发语法错误。如果已建立连接,则 字符串没有未配对的代理项,则用户代理必须发送数据 使用Web套接字。如果无法发送数据,例如,因为 需要缓冲,但缓冲区已满,用户代理必须 关闭Web套接字连接。如果出现以下情况,则该方法必须返回true 连接仍然建立(并且数据已排队或发送) 如果连接已关闭(例如,由于 用户代理刚刚发生缓冲区溢出,无法发送数据)

请注意,如果套接字缓冲区已满,则会触发错误条件并关闭套接字

此外,从实现的角度来看,这是有意义的。套接字实现的一个细节是字节实际通过网络发送的确切时间,因此,它们必须将字节复制到自己的缓冲区中,以便在数据发送之前保持对数据的控制(对于这样的设计来说,这是一种安全的编程实践)。否则,调用代码恢复缓冲区可能会出现可怕的计时问题