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