【发布时间】:2018-07-26 15:15:08
【问题描述】:
我正在尝试构建一个实时程序,用户可以在其中设置谷歌地图上的标记,而其他连接的人可以获得相同的标记。一切似乎都正常,只是几分钟后,服务器端再次提交数据。
澄清一下:客户端在地图上设置一个标记,该标记被发送到服务器,以 JSON 格式运行 Node JS 和 Express JS。服务器将数据返回给所有连接的客户端。几分钟后,服务器再次发送它收到的相同数据,导致示例“客户端代码”的最后一行出现“ERR_EMPTY_RESPONSE”客户端。
客户端代码:
var data = new Array();
data.push({lat: Gmap.markers[0].lat, lng: Gmap.markers[0].lng});
var xhttp = new XMLHttpRequest();
xhttp.open("POST", "/marker", true);
xhttp.setRequestHeader('Content-type', 'application/json; charset=UTF-8');
xhttp.send(JSON.stringify(data));
服务器端:
var app = express():
app.post('/marker', function(req,res){
io.emit('marker', req.body);
})
有人知道发生了什么吗?
【问题讨论】:
-
等等,您使用的是 WebSockets 还是 XMLHttpRequests?你是为了这个功能故意混合这些吗?
-
没错,我使用 WebSocket 的页面上还有一个聊天,但我想我也可以使用 Socket.IO 的功能来更新地图。
-
您忘记在服务器端调用
res.end(),因此请求可能在客户端超时。