我想使用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? '' –
是的我做過了' –