请求到达时调用nodeJS

时间:2016-04-15 06:11:16

标签: node.js

您好我是nodeJS的新手,我正在尝试在任何新请求到达时广播消息。

我正在尝试ajax调用并发送 ttype 变量并向所有浏览器广播,但我的问题是当我请求到达时

 socket.emit('date', {'date': ttype});

不工作。但是当我在我的nodeJs控制台上查看它时,它显示了tyype及其值。这是我的代码

var http = require('http');
var url = require('url');
var fs = require('fs');
var server;


var ttype = "";

    server = http.createServer(function(req, res){
        // your normal server code
        var path = url.parse(req.url).pathname;
        var queryObject = url.parse(req.url,true).query;
        ttype = queryObject.type;

        switch (path){
            case '/':


                fs.readFile(__dirname + path + "test.html", function(err, data){
                    if (err){
                         console.log('error');
                        //return send404(res);
                    }

                    res.writeHead(200, {'Content-Type': path == 'json.js' ? 'text/javascript' : 'text/html'});
                    res.write(data, 'utf8');
                    res.end();
                    sendMessage(ttype);

                });
                break;
            case '/test.html':
                fs.readFile(__dirname + path, function(err, data){
                    if (err){ 
                        return send404(res);
                    }
                    res.writeHead(200, {'Content-Type': path == 'json.js' ? 'text/javascript' : 'text/html'});
                    res.write(data, 'utf8');
                    res.end();
                });
            break;
            default: send404(res);
        }
    }),

    send404 = function(res){
        res.writeHead(404);
        res.write('404');
        res.end();
    };

    server.listen(8076);
    sendMessage = function(ttype){

         var iio = require('socket.io').listen(server);
         iio.sockets.on('connection', function(socket){
            socket.emit('date', {'date': ttype});
            console.log('in side connection');
         });
   }

    // use socket.io
    var io = require('socket.io').listen(server);
    // define interactions with client
    io.sockets.on('connection', function(socket,data){

        socket.emit('date', {'date': ttype});

        setInterval(function(){
                //socket.emit('date', {'date': new Date()});
         }, 5000);
        //recieve client data
        socket.on('client_data', function(data){
            process.stdout.write(data.letter);
        });
    });

1 个答案:

答案 0 :(得分:0)

因此,如果您想让所有浏览器通过发送ttype来了解新请求。您所要做的就是将sendMessage函数更改为:

sendMessage = function(ttype){

        io.emit('date', {'date': ttype});
        console.log('in side connection');

}