javascript - 为什么 Chrome 不能在一个紧密的循环中通过 websocket 发送,而 Firefox 可以?
问题描述
这是我最近的问题here的后续,因为我已经进一步缩小了这个问题的范围。
我正在研究通过 websocket 以 1MB 块从浏览器流式传输大文件的功能,但 Chrome 的 websocket 实现似乎无法跟上文件阅读器的速度。下面的代码在 Firefox(63 版)中运行良好,但在 Chrome(68 版)中运行缓慢,并且似乎冻结了浏览器。有任何想法吗?
用于接收数据的简单 websocket 服务器:
const WebSocket = require('ws')
const wsServer = new WebSocket.Server({ port: 9001 })
浏览器代码:
<!doctype html>
<html>
<head>
</head>
<body>
<input id='file_button' type='file'></input>
<script>
const ws = new WebSocket('ws://localhost:9001')
const data = new Uint8Array(1024*1024).fill(1)
ws.onopen = () => {
for (let i = 0; i < 1000; i++) {
console.log("send")
ws.send(data)
}
}
</script>
</body>
</html>
解决方案
推荐阅读
- javascript - 考虑到 Windows 10 全局缩放的鼠标位置
- python - 连接两行或多行,而不会在最后一行出现重复
- python - TypeError: 'int' 对象在使用 BeatifulSoup 进行 Webscraping 时不可迭代
- javascript - Node.JS:简单的 GET 请求模块抛出“检测到可能的 EventEmitter 内存泄漏”
- node.js - node.js 背压和排水事件。我遇到了内存泄漏警告
- arraylist - 数字系统之间的变化
- android - Android - FileNotFoundException 打开失败:EACCES(权限被拒绝)
- python - 如何使用 imblearn 管道在 sklearn gridsearchcv 后保存模型:TypeError: can't pickle _thread.RLock objects
- mysql - 有没有另一种方法来打开一个巨大的 SQL 文件而不是 MySQL cmd 、 Em Editor 和 bigdump ?
- java - 有没有办法将多个规则的零个或多个模式组合到 Antlr4 中的一个列表中?