使用节点在客户端和服务器之间保持连接打开

时间:2014-04-07 21:07:52

标签: javascript node.js connection socket.io

我知道如何在客户端和节点服务器之间发送请求并响应客户端的请求,如下所示:

节点:

function listen() {
    app.use(express.bodyParser());

    app.post('/login', function (req, res) {

        var username = req.body.username;
        var password = req.body.password;

        console.log('User ' + username + ' is attempting login...');
        validate(username, password, function (err, result) {
            if (err) loginFail(req, res, err);
            else loginSucceed(req, res, result);
        });
    });

    app.listen(8080, function () {
        console.log('Server running at http://127.0.0.1:8080/');
    });
}

客户端:

function sendLogin() {

    popLogCreds(creds);

    if (valLoginCreds(creds)) {

        var loginCredentials = {
            "username": creds.username,
                "password": creds.password
        };

        request = $.ajax({
            url: "http://127.0.0.1:8080/login",
            type: "POST",
            crossDomain: true,
            data: loginCredentials,
            dataType: "json"
        });

        request.always(function (data) {

            //process response

        });

    }
}

但是我没有成功地弄清楚如何在客户体验的长度上保持客户端和服务器之间的连接。

例如,如果我想让服务器在每次发生新事件时将数据推送到客户端。

可以在本机Node中完成,还是我必须使用Socket.io?

1 个答案:

答案 0 :(得分:0)

我认为你必须使用Socket.io(或它看起来像什么)。服务器无法向客户端发送信息(没有套接字)。

如果您不想使用socket.io,您可以执行setInterval并从服务器调用路由,以了解您是否有新数据可用。