服务器在AJAX请求后发送多个响应 - 使用Socket.IO和ExpressJS

时间:2018-02-15 18:59:25

标签: node.js express socket.io

我正在尝试构建一个实时程序,用户可以在Google地图上设置标记,其他人可以使用相同的标记。一切似乎都运行正常,但几分钟后,服务器端再次提交数据。

澄清一下:客户端在地图上设置标记,标记被发送到服务器,以JSON格式运行带有Express JS的Node 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);
})

任何人都知道会发生什么事?

1 个答案:

答案 0 :(得分:0)

您需要向http请求发送回复。如果您不这样做,浏览器会将其计时并尝试重试。

var app = express():
app.post('/marker', function(req,res){
    io.emit('marker', req.body);
    res.send("ok");     // <== Send a response to the http request here
})