В режиме совместимости IE пакеты, полученные через опрос, усекаются до определенной длины - PullRequest
0 голосов
/ 24 апреля 2019

Я занимаюсь разработкой проекта, когда сервер отправляет сообщения клиенту. На стороне сервера реализовано netty-socket.io 1.7.17 , а на клиенте - socket.io.-клиент 2.2.0 или 1.7.4 .В режиме совместимости IE , когда сервер отправляет сообщение в браузер IE через опрос , сообщение будет усечено , если оно слишком длинное .

Изображение ответа

Когда я получаю пакет с помощью wireshark, данные ответа полны.

сервер отправляет код сообщения какследующим образом:

public Boolean sendMessageToClient(String topic, String uuid, Object message) {
        SocketIOClient client = socketIOServer.getClient(UUID.fromString(uuid));
        if(client!=null){
            logger.debug("Transport: {} ", client.getTransport());
            if (Transport.POLLING.equals(client.getTransport())) {
                try {
                    message = Base64.getEncoder().encodeToString(JSONObject.toJSONString(message).getBytes("utf-8"));
                } catch (UnsupportedEncodingException e) {
                    e.printStackTrace();
                }
            }
            logger.debug("message: {} ", message);
            client.sendEvent(topic,message);
            return true;
        }
        return false;
    }

клиент получает код сообщения следующим образом:

var socket = io.connect(ProductUrl,{
    transports: ['polling']
});

socket.on('batch_recognize', function (data) {
    //This method will not be triggered because the received message is incomplete
    console.log(data);
    $("#data").html(JSON.stringify(JSON.parse(data),4))
    socket.disconnect();
});

Я думаю, что эта проблема - проблема с IE, не связанная с самим кодом.поскольку эта проблема существует только в режиме совместимости с IE, это нормально при использовании Chrome.Кто-нибудь сталкивался с этой проблемой?

...