如何让我的音频在 socket.io 中播放?

Posted

技术标签:

【中文标题】如何让我的音频在 socket.io 中播放?【英文标题】:How do I get my audio to play in socket.io? 【发布时间】:2019-02-27 03:55:25 【问题描述】:

我正在对我的 socket.io 聊天进行一些更新,并且我试图在每次传递消息时获取音频。当我发送消息时,我收到Uncaught (in promise) DOMException 这是传递消息时运行的代码:

socket.on('new message', (data) => 
            var messageE = document.createElement('div')
            messageE.classList.add("well");
            messageE.classList.add("msg");
            messageE.innerhtml = '<strong>'+ data.user +'</strong>: ' + data.msg;
            console.log(messageE)

            chat.appendChild(messageE)
            audio.play()
          )

我可能要到下午晚些时候才能回复。

【问题讨论】:

请分享更多关于使用的平台和插件的细节 阅读this 了解浏览器播放策略。可能是你的问题。 既然是DOMException,请尝试将您的函数包装在 Try Catch 块中。得到确切的错误。你能检查数据对象吗?假设您以某种方式定义了 audio 节点,以便可以在回调函数中访问它。 【参考方案1】:

几秒钟前我遇到了同样的错误,但我修复了它。这不是最酷的解决方案,但它确实有效。 我所做的告诉浏览器本身播放音频而不是直接从套接字播放。

创建一个 false 的外部变量(例如 socketCheck)。当调用套接字时,这将变为 trueif 将在 truefalse 时继续,但不会。播放声音后,再次将 soundCheck 设为 false 这是一个例子;

var soundCheck = false;

socket.on('new message', function()
    soundCheck = true;
);

if (soundCheck) 
    sound.play();
    sound = false;

【讨论】:

以上是关于如何让我的音频在 socket.io 中播放?的主要内容,如果未能解决你的问题,请参考以下文章

通过 socket.io 流式传输实时音频

如何让我的 Java 应用程序在 Linux 中播放好音频?

如何让我的两个音频播放器同时播放两首不同的歌曲?

我可以让我的设备(闹钟)在 Google 家庭音响上播放音频文件吗

通过 socket.io 1.0 实时音频

我们如何让 NSTimer 在 iOS 中为我​​的音频播放器在后台运行