您好我是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);
});
});
答案 0 :(得分:0)
因此,如果您想让所有浏览器通过发送ttype来了解新请求。您所要做的就是将sendMessage函数更改为:
sendMessage = function(ttype){
io.emit('date', {'date': ttype});
console.log('in side connection');
}