now.js没准备好

时间:2012-08-21 14:19:13

标签: node.js express nowjs-sockets

我有点问题。我正在尝试使用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

2 个答案:

答案 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