私はカウントダウンタイマーを表示するためにnode.jsとsocket.ioを使用しています。タイマーはnode.js上で実行されており、socket.ioを介してクライアントに時刻を送信しています。時間はsetTimeoutを使用しています。node.js socket.ioタイマー - シングルトンパターン?
問題は、各接続で、時間を取得してタイマーを発行する新しいプロトタイプクラスをインスタンス化していますが、時間はすべてのユーザーにとって同じである必要があります。理想的には、io.sockets.emitを使用します( 'socket'コールバックを使用することに反対します)。その後、すべてのクライアントに時間が送信されます(これが望ましい動作です)。
これで、接続するすべてのクライアントに新しいオブジェクトが追加されるため、タイマーに時間がかかることになります。
JavaScriptでは、シングルトンパターンがこの解決策になりますか?
私はこれを使用しようとしましたが、動作していないようでした。私はそれを呼んでいる
var Auction = function() {
Auction.instance = null;
if(!Auction.instance) {
Auction.instance = this;
} else {
console.log('instance');
return Auction.instance;
}
}
Auction.prototype = {
init: function() {
//setTimeout is defined here, along with a lot of other stuff
};
}
やって:
はvar auction = new Auction;
auction.init();
これはまだオブジェクトを複数回作成されます。
どのような提案も素晴らしいでしょう。ありがとうございました。
気付いているので、initを何度も実行していて、setTimeoutをやり直しているようです。 – dzm
@dave: '.init()'の後に続く任意の呼び出しがno-opsでなければならないことを意味しますか?その場合、最初に '.init'を空の関数で上書きしなければなりません。 – pimvdb