Ошибка Websocket при попытке отправить большие данные (более 2 ^ 16 байт) в JAVA

#java #websocket #server

#java #websocket #сервер

Вопрос:

 private void getIncomingData(InputStream is, OutputStream os) throws IOException {

   List<ArrayList> bucket = new ArrayList<ArrayList>();

    

    while (true) {
            try {
    
                List<Integer> list = new ArrayList<Integer>();
    
                int readed;
                while ((readed = is.read()) != -1) {
    
                    list.add(readed);
    
                    if (is.available() <= 0) {
    
                        // add to bucket with FRAMES
                        if (list.size() > 0) {
    
                            // check is final Frame
                            if (checkIsFinalFrame(list.get(0).byteValue())) {
                                this.isLastFrame = true;
                            }
    
                            System.out.println("SIZE OF list[ "   list.size()   " ]nn");
                            bucket.add((ArrayList) list);
                        }
                        break;
                    }
                }
    
            } catch (IOException e) {
                System.out.println(e.getMessage());
                is.close();
                os.close();
                break;
            }
        }
    }
  

При отправке данных размером менее 2 ^ 16 первый байт равен 10000001
и все работает нормально.

Но когда объем данных превышает 2 ^ 16, первый байт равен 00000001, и больше кадров не принимается (ожидание байта 10000001).

Для клиентской стороны используется «‘var socket = new WebSocket(‘ws://…’);»‘

Я не могу понять, что не так!

Комментарии:

1. Разделите их на куски

2. Как я могу разделить их на части со стороны клиента?