Socket.io 消息对于 DigitalOcean 来说太大了
Socket.io message too large for DigitalOcean
我有一个 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 配置。
原来是我的nginx配置问题。我在这里提到了这个 post:
Meteor WebSocket handshake error 400 with nginx
我有一个 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 配置。
原来是我的nginx配置问题。我在这里提到了这个 post: Meteor WebSocket handshake error 400 with nginx