页面退出时的Nodejs事件

时间:2014-07-03 12:40:01

标签: javascript node.js express

我对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套接字。

1 个答案:

答案 0 :(得分:1)

问题是:HTTP不是双向的,因此只有一种“方式”来发送数据(服务器到客户端)。

所以我认为你要么添加一个超时机制(如果在时间X没有发送消息则关闭套接字)或者查看websockets(允许双向通信)。我建议看看socket.io,Primus,Engine.io或google“node websocket”;)