0

Node.js で最初のアプリを起動して実行しました。現時点では、静的ファイルを提供しているだけです。しかし、将来的に実装されるいくつかのアイデアがあるので、先に進んでノードのセットアップを取得し、その時が来たら準備ができるようにします。

// get modules
var express = require('express');
var fs = require('fs');

// create app instance
var app = express();

// static files middleware
app.use("/assets", express.static(__dirname + '/assets'));

// main route
app.get('/', function(req, res) {
    var html = fs.readFileSync('assets/views/main.html', 'utf8');
    res.send(html);
});

// make web server listen on specific port
app.listen(8080);

注: 1 つのルートを提供するのに Express は必要ないことはわかっていますが、そのルートでも有利なスタートを切ることの弊害は何だと思いますか?! :)

私が考えた最初のアイデアは、現在アプリを使用しているすべてのユーザーが、更新があり、ブラウザーを更新する必要があることを確認できるようにすることです。アプリは非常に基本的なものであるため、アプリの現在の状態を保存する必要はありません。

したがって、私がユーザーである場合、アプリとブームを使用していると、更新が必要であることを知らせる非常に小さなモーダル ウィンドウ アラート通知が表示されます。

また、アラートを送信した後に一部のユーザーがアプリをロードした場合、そのユーザーにはアラートがまったく表示されません (新しい変更が既に表示されているため)。

この件についてグーグルで調べましたが、見つけた例に満足していません。新しい通知をプッシュするために notifications.xml ファイル (node.js が監視するファイル) を更新する必要はないと思います。

私が考えることができる 1 つの解決策は、コマンド ラインから実行できるコマンドを作成し、(どういうわけか) 新しい通知をアプリに送信することです。おそらく、Grunt.js のようなものを使用します (使用したことがないため、これに適しているかどうかはわかりません)。基本的に、通知が送信されると、その痕跡はすべて消えるはずです。そのため、コマンド ライン アプローチが適していると思います。

ここに私の質問があります: どのように (一般的に言えば) このようなものを実装する必要がありますか? 私は Node.js の初心者ですが、javascript とコマンド ラインにはかなり慣れています。

私にとってより良いと思われる代替ソリューション(コマンドラインアプローチ以外)、または私に役立つと思われるツールを自由に提供してください。

ありがとう!

4

1 に答える 1

1

更新を Web クライアントにプッシュする場合、1 つの方法はSocket.ioなどを使用することです。これにより、更新を非同期にプッシュするために使用できるクライアントとサーバー間の双方向パイプが作成されます。

サンプル サーバー:

var app = require('express').createServer()
  , io = require('socket.io').listen(app);

app.listen(80);

app.get('/', function (req, res) {
  res.sendfile(__dirname + '/index.html');
});

io.sockets.on('connection', function (socket) {
  socket.emit('news', { hello: 'world' });
  socket.on('my other event', function (data) {
    console.log(data);
  });
});

サンプル クライアント:

<script src="/socket.io/socket.io.js"></script>
<script>
  var socket = io.connect('http://localhost');
  socket.on('news', function (data) {
    alert('New news has come in! Please refresh your page!');
    socket.emit('my other event', { my: 'data' });
  });
</script>

もう 1 つのオプションは、JavaScript を使用してクライアントからポーリングし、積極的に更新を探すことです。クライアントが更新を必要とするかどうかを判断するために、クライアントごとにサーバーの状態を維持する必要があります。次に、クライアントはあるタイマー間隔 (たとえば、1 秒に 1 回) で取得要求をセカンダリ ルートに送信し、サーバーは「はい、更新が必要です」または「いいえ、更新は必要ありません」と応答します。 . はいの場合、クライアント Javascript はモーダル ボックスをポップアップ表示し、ユーザーに更新するように指示します。

于 2012-09-18T23:05:59.340 に答える