我想使用NodeJS实现服务器端推送功能。 现在,我要的是一个监听请求到特定的URL(例如http://localhost:8000/inputData?data=hello
)使用NodeJS服务器端推送
一旦这个请求,我想观看client.html
所有客户端运行alert(hello);
服务器。我所做的是下面的,在服务器端:
var app = require('http').createServer(handler),
io = require('socket.io').listen(app),
parser = new require('xml2json'),
fs = require('fs'),
url = require('url');
var qs = require('querystring');
app.listen(8000);
console.log('server listening on localhost:8000');
function handler(req, res) {
var url_parts = url.parse(req.url, true);
var pathname = url_parts.pathname;
switch(pathname){
case '/inputData':
var data = url_parts.query.data;
socket.emit('notifyData', data); //socket is undefined
break;
default:
fs.readFile(__dirname + '/client.html', function(err, data) {
if (err) {
console.log(err);
res.writeHead(500);
return res.end('Error loading client.html');
}
res.writeHead(200);
res.end(data);
});
}
;
}
在客户端,在client.html
:
<script>
var socket = io.connect('http://localhost:8000');
socket.on('notifyData', function (data) {
alert(data);
});
</script>
我得到一个错误,说socket
没有定义。我知道我应该早些定义它,但我不知道该怎么做。
这是否正确地解决此类问题?或者emit
应该位于不同的文件中,例如inputData.html
?我宁愿补充我已有的代码,因为我可能需要在var data= url_parts.query.data
您是否在客户端包含了一个[reference](http://socket.io/download/)到socket.io? '' –
是的我做过了' –