2

少し問題があります。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>

どんな助けでも大歓迎です!

ベスト、コーネル

4

2 に答える 2

3

さて、答えを見つけました。長い答え: now.js には、socket.io が通信する通信ポートを決定する際に問題があります。この問題は、デフォルトの https ポート (443) を使用している場合にのみ発生するようです。

醜い解決策を2つ見つけました: https://groups.google.com/forum/?fromgroups=#!topic/nowjs/8cO9D77tN2o

基本的には now/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 で修正されることを願っています。

敬具: コーネル

于 2012-08-22T09:22:52.717 に答える
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
于 2012-08-21T18:22:43.387 に答える