Javascript 使用socket.io从服务器接收ArrayBuffer时,Web音频API播放延迟

Javascript 使用socket.io从服务器接收ArrayBuffer时,Web音频API播放延迟,javascript,websocket,socket.io,web-audio-api,Javascript,Websocket,Socket.io,Web Audio Api,让我从一个事实开始,我对web开发游戏相当陌生,一两周来几乎没有使用过socket.io。我尝试播放从socket.io接收的ArrayBuffer中的音频,该文件对应于使用Web audio API传输的MP3文件。ArrayBuffer被WebAudio成功解码,但我遇到的唯一问题是,在收到ArrayBuffer的初始块后,需要大约10秒钟才能开始播放这首歌 我的理解是,它等待整个文件流化,然后开始播放??当第一组块到达时,有没有更好的方法来播放曲目 这是我目前使用它的方式: socket.

让我从一个事实开始,我对web开发游戏相当陌生,一两周来几乎没有使用过socket.io。我尝试播放从socket.io接收的ArrayBuffer中的音频,该文件对应于使用Web audio API传输的MP3文件。ArrayBuffer被WebAudio成功解码,但我遇到的唯一问题是,在收到ArrayBuffer的初始块后,需要大约10秒钟才能开始播放这首歌

我的理解是,它等待整个文件流化,然后开始播放??当第一组块到达时,有没有更好的方法来播放曲目

这是我目前使用它的方式:

socket.on('browser:buffer', function(data) {
            console.log(data.buffer);
            source = audioContext.createBufferSource();
            audioContext.decodeAudioData(data.buffer, function(decodedData) {
                source.buffer = decodedData;
                source.connect(audioContext.destination);
                source.loop = true;
                source.connect(audioContext.destination);
                source.start(0);
            });
        }, function(error) {
            console.error("decodeAudioData error", error);
        });

是的,您可以通过

如果您实际上不需要WebAudio,则其他选项是最简单的:

var sound = new Audio("myaudio.mp3");
sound.play()

是的,当我意识到WebAudio比我的用例更强大时,我最终使用了第二个选项。
var sound = new Audio("myaudio.mp3");
sound.play()