【发布时间】:2018-03-29 11:07:48
【问题描述】:
我一直在使用 ktor 在 kotlin 中开发一个迷你 webapp(玩康威的人生游戏)。我遇到了一个问题,不是我在 jquery post 请求中从前端发送的所有数据都发送到服务器。我在前端构造了一个带有 4500 个键的 javascript 对象并将其发布,但服务器只接收到一个存在 1000 个键的对象。做一些谷歌搜索让我找到了一些关于 php 问题的资源,但没有关于直接 javascript 的资源。我正在使用 jquery 3.3.1。这是发布帖子的客户端代码:
let m = buildBoard();
// this logs 4500
console.log("size of posted object: " + Object.keys(m).length);
$.post("/update", m, (responseJson) => {
responseJson = JSON.parse(responseJson);
// this logs 1000, even though it should be the same size as what we posted
console.log("size of response: " + Object.keys(responseJson).length);
for(const key of Object.keys(responseJson)) {
let arr = JSON.parse(key);
drawCell(parseInt(arr[0]), parseInt(arr[1]), responseJson[key]);
}
});
服务器基本上获取它发送的 json 对象(表示板状态)并在将更新的板发送回客户端之前对其进行转换。登录服务器告诉我服务器只收到了 1000 块棋盘,这让我相信问题出在 js 端(但如果有人认为这可能是问题,我很乐意发布服务器代码)。
【问题讨论】:
-
我会调查你服务器的 json 解析器的限制。这些解析器默认有一个限制,以防止大量数据的攻击
-
尝试使用wireshark或代理,并检查数据是否真的被发送,应该可以减少问题
-
您在服务器端使用的是哪台服务器? Tomcat、Jetty、VertX、SpringBoot、RatPack、...?其他 3500 个帖子会发生什么情况,它们是否超时,给出错误 500,...?大多数浏览器一次只能处理 17 个并发帖子
-
我使用 netty 作为我的服务器 Jan。我也没有发布 4500 个帖子,而是发布了一个具有 4500 个键的对象的帖子,所以我认为并发帖子不是问题。我正在使用 GSON 解析服务器端的 json 数据,并且文档没有提到任何限制,所以我认为这不是正在发生的事情。我将使用wireshark,看看接下来会发生什么。
标签: javascript jquery kotlin