now.js没有准备好

我有一个问题。 我正在尝试使用node.js / express.js / now.js创build一个dynamic的Web应用程序。 我已经做了一切,如http://nowjs.com/download小示例代码所示,没有成功,客户端的now.js脚本正确托pipe,但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> 

任何帮助将不胜感激!

最好的,Kornel

那么,find答案。 长的回答:now.js在确定socket.io应该通信的通信端口时有问题。 这个问题似乎只在使用默认的https端口(443)时出现。

我发现了两个解决scheme,一个是丑陋的: https : //groups.google.com/forum/?fromgroups = #!topic /

基本上你需要在now / lib / fileServer.js中编辑now.js的源代码并replace

 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

使用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