javascript - 当多个窗口打开时,如何避免多次写入相同的cookie

标签 javascript cookies

我有一个简单的聊天室网络应用程序。我希望能够使用 JavaScript 将聊天记录保存到用户的 cookie 中。我刚刚遇到的问题是,当用户打开多个窗口时,他会将聊天消息多次保存到他的 cookie 中。读到这里一定很困惑,请看下面的例子:

聊天室中只有两个用户 A 和 B,A 表现正常,但 B 有两个窗口打开,都在同一个聊天室页面中。 A 说“早上好”,B 什么也没说,他看到的是:

A: Good Morning

到目前为止没有什么问题,但是当 B 将此消息保存到他的 cookie 中时,因为他打开了两个窗口,所以该消息将被保存到他的 cookie 中两次。那么下次他来到聊天室时,他看到的聊天记录将是:

A: Good Morning

A: Good Morning

如果B同时打开n个窗口,则该消息被保存n次。

我想到的一个解决方案是,当将消息保存到cookie中时,检查cookie中的最后一条消息是否与保存的消息相同,如果相同,则不再保存。

但对于用户确实多次发送相同消息的情况,这将忽略不应该的重复消息。

这个问题通常是如何解决的?我猜用户通常不能同时打开两个聊天室页面,但我允许他们这样做。

最佳答案

为每条消息分配一个服务器上唯一的 ID。检查本地聊天记录,看看该 ID 是否已存在于其中。

关于javascript - 当多个窗口打开时,如何避免多次写入相同的cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34692564/

相关文章:

javascript - JavaScript cookie 的有效期为 6 个月

android - 如何将有效的 cookie 永久放入 android 中的 volley post 请求中?

JavaScript 查询选择器全部

javascript - Ramda 通过链调用传递 "Maybe"错误消息

javascript - 在 Angular 中使用外部库

C# HttpClient Cookie 和 session ID 问题

javascript - ES6 在 React 中定义状态的方式

javascript - 我可以让下一个按钮工作,但不能让上一个按钮工作。我究竟做错了什么?

javascript - 关于 ASP.net 应用程序中 cookie 和 session 的问题

google-chrome - Ubuntu 重启后谷歌浏览器丢失 cookie