node.js
とsocket.io
でチャットを作成しました。チャットは、サーバーとクライアントのDate.now()に違いがあります
ユーザーがメッセージを送信すると、DOMに直接挿入してメッセージをサーバーに送信するため、他のすべてのクライアントに送信できます。
問題は、サーバー上のDate.now()
で設定されたタイムスタンプが、クライアントで設定されたタイムスタンプとまったく同じコマンドで異なると思われることです。
これにより、後で送信されたメッセージに以前に送信されたメッセージよりも前にタイムスタンプが表示されるため、インターフェイスが少し奇妙になります。
ユーザーがチャットルームに参加し、新しいメッセージが追加されたときにこの差異を差し引いたときの時間差を計算するのが1つの解決策ですが、これが本当に必要か、これを一般的な方法で解決する必要がありますか?これはまた、タイムゾーンなどに対処する解決策かもしれませんか?
異なるコンピュータのクロックが異なる - おそらく、サーバーでメッセージを受信したときにタイムスタンプを使用していますか?時間差アプローチは役に立ちますが、クライアントからサーバーへメッセージを配信する時間が一定でないという事実によって複雑になります。 –
しかし、ユーザーのメッセージをサーバーに送信する前に追加する必要があります。 Facebookのようなウェブサイトはどのようにチャットでそれをしていますか? – mortensen
私はクライアントがサーバーにメッセージを送信し、サーバーのタイムスタンプを受信し、そして誰もがサーバーへの到着時刻とともにそれらを見ると思う。 –