我是新手。最近下载了Mixus Node Book这篇pdf文档。试着执行文档内的例程。在试验Simple Messaging application一节的例子时,遇到了问题。发出来请高手帮看看。 这是一个简单的消息推送服务器。发布消息使用:http://192.168.77.159:7778/msg/这里是消息内容。页面获取消息采用jQuery的long polling方式。在一台CentOS虚拟机下测试,用这台虚拟机的FireFox访问。
服务端代码: var http = require('http'), url = require('url'), fs = require('fs'); var messages = ["testing"]; var clients = [];
http.createServer(function(req, res) { var url_parts = url.parse(req.url); console.log(url_parts); if ( url_parts.pathname.substr(0, 5) == '/poll' ) { console.log('request /poll'); var count = url_parts.pathname.replace(/[^0-9]*/, ''); console.log(count); if ( messages.length > count ) { console.log('send response'); res.end(JSON.stringify({ count:messages.length, append:messages.slice(count).join("\n")+"\n" })); } else { console.log('appending the client'); clients.push(res); } } else if ( url_parts.pathname.substr(0, 5) == '/msg/' ) { console.log('request /msg/'); var msg = unescape(url_parts.pathname.substr(5)); console.log(msg); messages.push(msg); while ( clients.length > 0 ) { var client = clients.pop(); client.end(JSON.stringify({ count:messages.length, append:msg+"\n"})); } res.end(); } }).listen(7778, '192.168.77.159'); console.log('Server running.');
客户端发送消息不需要编写代码,在浏览器的地址栏内直接输入url外加消息内容即可。 这是消息获取页面客户端代码:
w现在遇到的问题是,获取消息的页面始终无法显示出任何消息内容。但如果在浏览器的地址栏内直接输入这样的地址,就能看到json格式字串:http://192.168.77.159:7778/poll/0。
我曾试着将客户端代码换成手写的ajax调用代码,不知为何req.status的值却是0。还望高手指点一二!