我有点问题。我正在尝试使用node.js / express.js / now.js创建一个动态Web应用程序。我完成了http://nowjs.com/download的小示例代码中显示的所有内容,没有成功,客户端now.js脚本正确托管,但now.ready(..)永远不会触发。唯一的区别是我使用express和我的服务器用于初始化now.js是https。
你有什么想法可能导致它无法正常工作吗?
服务器端:
var server = express.createServer(..);
..
server.listen(port, function() {..});
var nowjs = require('now');
var everyone = nowjs.initialize(server);
everyone.now.log = function(msg) { console.log(msg); }
客户方:
<script type="text/javascript" src="/nowjs/now.js"></script>
<script type="text/javascript">
now.ready(function() { now.log('asd'); alert('asd'); });
</script>
任何帮助都将受到高度赞赏!
Best,Kornel
答案 0 :(得分:3)
好吧,找到了答案。 答案很长:now.js在确定socket.io应该通信的通信端口时有问题。此问题似乎仅在使用默认https端口(443)时出现。
我找到了两个解决方案,丑陋的解决方案: https://groups.google.com/forum/?fromgroups=#!topic/nowjs/8cO9D77tN2o
基本上你需要在/ lib / fileServer.js编辑now.js的源代码并替换
var hostPort = options['port'] || host[1] || '80';
与
var hostPort = options['port'] || host[1] || ((request.headers.referer.split(':')[0] === 'https') ? '443' : '80');
更好的方法是将端口选项设置为socket.io。幸运的是,这是由now.js支持的:
var everyone = nowjs.initialize(server, {port: port, socketio: {transports: ['xhr-polling', 'jsonp-polling']}});
我希望这会帮助其他人遇到同样的问题,并希望稍后在now.js中修复此行为。
最好的问候:Kornel
答案 1 :(得分:0)
使用Safari运行最新版本的节点,现在运行在OSX上。
server.js
var html = require('fs').readFileSync(__dirname+'/index.html');
var httpServer = require('http').createServer(function(req, response) {
/* Serve your static files */
response.end(html);
})
httpServer.listen(8080);
var nowjs = require("now");
var everyone = nowjs.initialize(httpServer);
console.log('done');
everyone.now.logStuff = function(msg){
console.log(msg);
}
的index.html
<script type="text/javascript" src="http://localhost:8080/nowjs/now.js"></script>
<script type="text/javascript">
now.ready(function(){
// "Hello World!" will print on server
now.logStuff("Hello World!");
});
</script>
done..
启动服务器:
node server.js
打开浏览器:
http://localhost:8080