オークションシステムはセントラルクロックを必要とする
時計で動く競売
オークションシステムのいずれかのライブまたはタイムクロックを実行します.ライブオークションでは、しばしば時計に応じて入札を呼び出します.時限オークションでは、起動し、クロックでオークションを終了し、ユーザーがカウントダウンタイマーを示しています.
ブラウザー時間は信用できません
ブラウザでnew Date()
ユーザーのローカル時刻に応じてユーザーローカル時間を与えます.ユーザーが別のタイムゾーンに存在するように、さらに不正確なコンピュータクロックを持っている可能性があります、または彼らは意図的にその時計を変更することがあります、ローカル時間は異なります.
明らかに、1つは、ユーザーが任意の時間依存の機能を観察し、任意の時間に依存した動作を、オークションシステムのすべてのユーザーのための同じクロックに基づいて行うことはできません.
中央時計が必要
したがって、オークションシステムは論理的に中央クロックを必要とし、そのクロックは、カウントダウンタイマー、またはオークション開始および終了時間のような絶対時間などの相対時間が、Webページ上のユーザーによって観察される場合には、すべてのユーザーに投影されなければならない.Webページは、ユーザーのタイムゾーンに絶対時間を表示することがありますが、ローカル時刻を中央クロックから派生させる必要があります.
このようなセントラルクロックはサーバーで実装されなければなりません.ユーザのWebページに送信する必要があります.
この種の伝送は、時間のベースのイベント(例えば競売開始または終了)のいずれかでありえる.そして、ウェブページが動的に、例えば、秒読みタイマーを進めることを調整する.
中央時計の存在は、サーバーがアップデートを送るリアルタイムウェブアプリケーションの必要を意味します.
セントラルクロックの実装
ノード。js
サーバ側
Webページとサーバーを統合するSocket.IO .
サーバ実行時setTimeout
or setInterval
, イベントベースのアクションまたは定期的な更新、それぞれ.
フロントエンドイベントベース
フロントエンドでは、イベントベースのオークションなどのソケットイベントを聞きます.
socket.on('advanceCall', (data) => {});
Or
socket.on('startAuction', (data) => {});
フロントエンド周期
socket.on('time', (data) => {});
ラーラベル
サーバ側
用途ReactPHP タイマーを実装するには、周期的に、
$timer = $loop->addPeriodicTimer($time, function()
use(&$task) {
broadcast(new TimeSignal(json_encode(...)));
});
どこTimeSignal
はLaravel event .
あるいは一回
$timer = $loop->addTimer($time, function()
use(&$task) {
broadcast(new AuctionCall(json_encode(...)));
});
どこAuctionCall
はラービアのイベントです.
詳細については、私の記事を参照してくださいTimer Server in ReactPHP .
イベントを使って放送するLaravel Echo Server or Laravel Websockts
フロントエンド
ソケットでイベントを聞いてください.入出力
window.Echo.channel('auction-events')
.listen('startAuction', (e) => {
});
Or
window.Echo.channel('time-signal')
.listen('time', (e) => {
});
Reference
この問題について(オークションシステムはセントラルクロックを必要とする), 我々は、より多くの情報をここで見つけました
https://dev.to/kornatzky/an-auction-system-needs-a-central-clock-15p
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
ブラウザで
new Date()
ユーザーのローカル時刻に応じてユーザーローカル時間を与えます.ユーザーが別のタイムゾーンに存在するように、さらに不正確なコンピュータクロックを持っている可能性があります、または彼らは意図的にその時計を変更することがあります、ローカル時間は異なります.明らかに、1つは、ユーザーが任意の時間依存の機能を観察し、任意の時間に依存した動作を、オークションシステムのすべてのユーザーのための同じクロックに基づいて行うことはできません.
中央時計が必要
したがって、オークションシステムは論理的に中央クロックを必要とし、そのクロックは、カウントダウンタイマー、またはオークション開始および終了時間のような絶対時間などの相対時間が、Webページ上のユーザーによって観察される場合には、すべてのユーザーに投影されなければならない.Webページは、ユーザーのタイムゾーンに絶対時間を表示することがありますが、ローカル時刻を中央クロックから派生させる必要があります.
このようなセントラルクロックはサーバーで実装されなければなりません.ユーザのWebページに送信する必要があります.
この種の伝送は、時間のベースのイベント(例えば競売開始または終了)のいずれかでありえる.そして、ウェブページが動的に、例えば、秒読みタイマーを進めることを調整する.
中央時計の存在は、サーバーがアップデートを送るリアルタイムウェブアプリケーションの必要を意味します.
セントラルクロックの実装
ノード。js
サーバ側
Webページとサーバーを統合するSocket.IO .
サーバ実行時setTimeout
or setInterval
, イベントベースのアクションまたは定期的な更新、それぞれ.
フロントエンドイベントベース
フロントエンドでは、イベントベースのオークションなどのソケットイベントを聞きます.
socket.on('advanceCall', (data) => {});
Or
socket.on('startAuction', (data) => {});
フロントエンド周期
socket.on('time', (data) => {});
ラーラベル
サーバ側
用途ReactPHP タイマーを実装するには、周期的に、
$timer = $loop->addPeriodicTimer($time, function()
use(&$task) {
broadcast(new TimeSignal(json_encode(...)));
});
どこTimeSignal
はLaravel event .
あるいは一回
$timer = $loop->addTimer($time, function()
use(&$task) {
broadcast(new AuctionCall(json_encode(...)));
});
どこAuctionCall
はラービアのイベントです.
詳細については、私の記事を参照してくださいTimer Server in ReactPHP .
イベントを使って放送するLaravel Echo Server or Laravel Websockts
フロントエンド
ソケットでイベントを聞いてください.入出力
window.Echo.channel('auction-events')
.listen('startAuction', (e) => {
});
Or
window.Echo.channel('time-signal')
.listen('time', (e) => {
});
Reference
この問題について(オークションシステムはセントラルクロックを必要とする), 我々は、より多くの情報をここで見つけました
https://dev.to/kornatzky/an-auction-system-needs-a-central-clock-15p
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
ノード。js
サーバ側
Webページとサーバーを統合するSocket.IO .
サーバ実行時
setTimeout
or setInterval
, イベントベースのアクションまたは定期的な更新、それぞれ.フロントエンドイベントベース
フロントエンドでは、イベントベースのオークションなどのソケットイベントを聞きます.
socket.on('advanceCall', (data) => {});
Orsocket.on('startAuction', (data) => {});
フロントエンド周期
socket.on('time', (data) => {});
ラーラベル
サーバ側
用途ReactPHP タイマーを実装するには、周期的に、
$timer = $loop->addPeriodicTimer($time, function()
use(&$task) {
broadcast(new TimeSignal(json_encode(...)));
});
どこTimeSignal
はLaravel event . あるいは一回
$timer = $loop->addTimer($time, function()
use(&$task) {
broadcast(new AuctionCall(json_encode(...)));
});
どこAuctionCall
はラービアのイベントです.詳細については、私の記事を参照してくださいTimer Server in ReactPHP .
イベントを使って放送するLaravel Echo Server or Laravel Websockts
フロントエンド
ソケットでイベントを聞いてください.入出力
window.Echo.channel('auction-events')
.listen('startAuction', (e) => {
});
Or window.Echo.channel('time-signal')
.listen('time', (e) => {
});
Reference
この問題について(オークションシステムはセントラルクロックを必要とする), 我々は、より多くの情報をここで見つけました https://dev.to/kornatzky/an-auction-system-needs-a-central-clock-15pテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol