如何通过 WebSocket 发送 base64 编码的图像? (接近事件1006)

How to send images base64 encoded via WebSocket? (Getting close event 1006)

我正在尝试将文件发送到服务器。我有一个固定的消息格式,如下所示:

var msg = {
    'msgtype': <number>,
    //additional data specific to the msgtype
};

对于图像,它看起来像这样:

var msg = {
    'msgtype': 9,
    'id': 42, // to which group this image belongs to
    'blob': 'BASE 64 encoded image string'
};

读取文件和发送文件时,它崩溃了。服务器不接收任何数据。当发送这样的小文件时: 它有效。 检查错误消息后,我找到了关闭原因:1006.

另一个想法是直接发送二进制数据,但这会破坏我的消息模式。另外:我不知道如何将网络服务器上的二进制流分配给给定的 id。这种方法的唯一解决方案是先发送 id,然后将其余部分视为数据。

edit: 我用静态字符串测试了它。我最多可以在 blob 字符串中放入 8153 个字符。如果有更多它会崩溃。

问题是邮件大小。我发现,我可以通过 运行:

在服务器端 (Java) 设置它
session.setMaxTextMessageBufferSize(200000);