我对NodeJS和ExpressJS很新,但想知道是否有一个事件在页面离开时触发。我有一个ExpressJS / NodeJS应用程序,在app.js中我在特定页面上设置了UDP监听器;即。
app.get('/sims', function(req, res) {
var udp = require('dgram');
var udpSocket = udp.createSocket('udp4');
udpSocket.bind(8081);
udpSocket.on("error", function (err) {
console.log("server error:\n" + err.stack);
udpSocket.close();
});
udpSocket.on("message", function (msg, rinfo) {
console.log("server got: " + msg + " from " +
rinfo.address + ":" + rinfo.port);
//do stuff with the message to dynamically update the page
});
udpSocket.on("listening", function () {
var address = udpSocket.address();
console.log("server listening " +
address.address + ":" + address.port);
});
udpSocket.on("close", function () {
console.log("udp socket closed!!!");
});
});
我的问题是,我怎么知道什么时候关闭udpSocket?我无法在app.get的范围内关闭它,当我离开页面时它似乎不会自动关闭。每次有人访问该页面时,我都不想打开一堆UDP套接字。
答案 0 :(得分:1)
问题是:HTTP不是双向的,因此只有一种“方式”来发送数据(服务器到客户端)。
所以我认为你要么添加一个超时机制(如果在时间X没有发送消息则关闭套接字)或者查看websockets(允许双向通信)。我建议看看socket.io,Primus,Engine.io或google“node websocket”;)