对于DigitalOcean来说,Socket.io消息太大了

时间:2017-12-23 04:57:34

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

我有一个Node.js网络应用程序,它记录音频,将其转换为base64网址,然后(使用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网址。但是,当我把它放在DigitalOcean上时,它只适用于几秒钟的音频文件。这可能是socket.io的错误或DigitalOcean提供的错误(可能是带宽限制等)。如果有帮助,我使用1GB内存/ 30 GB磁盘/ Ubuntu 17.04 x64配置。

1 个答案:

答案 0 :(得分:0)

事实证明,我的nginx配置存在问题。我在这里提到这篇文章: Meteor WebSocket handshake error 400 with nginx