Я занимаюсь разработкой проекта, когда сервер отправляет сообщения клиенту. На стороне сервера реализовано 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.Кто-нибудь сталкивался с этой проблемой?