Websocket Java向客户端发送的数据超过65536字节,大小超过浏览器

时间:2014-09-23 14:54:59

标签: java javascript html websocket socket.io

    //op - OutPutStream
    byte[] textBytes = strText.getBytes("UTF-8");
    op.write(0x81);
    if(textBytes.length < 127)
    {
        op.write(textBytes.length);
    }
    else
    if(textBytes.length >= 127 && textBytes.length <= 65536)
    {
        op.write(0x7E);
        op.write((textBytes.length >> 8) & 255);
        op.write((textBytes.length) & 255);
    }
    else
    if(textBytes.length > 65536)
    {
        op.write(0x7F);
        op.write((byte)((textBytes.length >> 56 ) & (byte)255));
        op.write((byte)((textBytes.length >> 48 ) & (byte)255));
        op.write((byte)((textBytes.length >> 40 ) & (byte)255));
        op.write((byte)((textBytes.length >> 32 ) & (byte)255));
        op.write((byte)((textBytes.length >> 24 ) & (byte)255));
        op.write((byte)((textBytes.length >> 16 ) & (byte)255));
        op.write((byte)((textBytes.length >> 8 ) & (byte)255));
        op.write((byte)(textBytes.length & (byte)255));
    }

    op.write(textBytes);
    op.flush();

如果数据小于127,则第一个if语句有效,第二个if块也有效,但是当数据超过65536个字节时,最后一个块不起作用,因为在浏览器中我得到错误:

failed: WebSocket frame length too large: 295416440622254 bytes

任何人都可以告诉我上一次if语句有什么问题吗?哪些字节不正确?

0 个答案:

没有答案