node.js 消息推送服务器,使用NodeJS进行服务器端推送

我想使用NodeJS实现服务器端推送功能。

目前,我想要的只是一个侦听特定网址请求的服务器(例如http://localhost:8000/inputData?data=hello)

发出此请求后,我希望所有查看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:

var socket = io.connect('http://localhost:8000');

socket.on('notifyData', function (data) {

alert(data);

});

我收到错误消息,指出socket未定义。我知道我应该提前定义它,但我不知道该怎么做..

这是解决此类问题的正确方法吗?或者emit是否应该在不同的文件中,例如inputData.html?我宁愿补充我已有的代码,因为我可能需要在var data= url_parts.query.data之前做一组操作

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值