【问题标题】:Socket.io message too large for DigitalOceanSocket.io 消息对于 DigitalOcean 来说太大
【发布时间】:2018-06-05 14:26:41
【问题描述】:

我有一个 Node.js 网络应用程序,它记录音频,将其转换为 base64 url​​,然后(使用 socket.io)将其发送到服务器。这在本地工作得很好,但是我发现当我尝试使用 DigitalOcean 时,如果发送的音频 base64 太大,它就不起作用。如果音频是几秒钟,它将成功发送到服务器。

这是我的客户端代码:

Fr.voice.exportMP3(function(url){
    console.log("base64 URL : " + url);
    var base64AudioInfo = {
        userId: $(".active-user-id").val(),
        noteId: $(".note-interface:visible > .active-note-id").val(),
        base64URL: url
    };
    socket.emit("set base64 audio", base64AudioInfo);
    $("<a href='"+ url +"' target='_blank'></a>")[0].click();
}, "base64");

这是我的服务器端代码:

socket.on("set base64 audio", function(base64AudioInfo){
    console.log("Base 64 audio set!");
    // set base 64 audio
});

还有一些代码代替了// set base 64 audio,但它很长,可能会使事情变得过于复杂。

在本地,这适用于任何大小的音频 base64 URL。但是,当我将它放在 DigitalOcean 上时,它只适用于几秒钟长的音频文件。这可能是 socket.io 的错误还是 DigitalOcean 造成的错误(可能是带宽限制等)。如果有帮助,我正在使用 1GB 内存 / 30 GB 磁盘 / Ubuntu 17.04 x64 配置。

【问题讨论】:

  • 您可以尝试使用 LZMA 之类的压缩音频 base64 字符串。
  • 转base64前的音频格式是什么?
  • @Andrew 音频格式是 .wav

标签: node.js sockets socket.io digital-ocean


【解决方案1】:

原来是我的 nginx 配置有问题。我在这里提到了这篇文章: Meteor WebSocket handshake error 400 with nginx

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-10-02
    • 2019-07-29
    • 2012-07-22
    • 2015-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多