【问题标题】:Real-time chat issue (django/js)实时聊天问题(django/js)
【发布时间】:2016-02-25 02:46:00
【问题描述】:

我正在进行实时聊天。我需要更改房间所有者和连接用户的状态以及 UI。由于 NodeJS/SocketJS/etc 不保证消息传递,我为此切换到纯 Ajax。

系统是这样工作的: - 用户按下一个按钮来改变他的状态 - 一个 Ajax 请求被发送到服务器,一个状态更改请求被保存在 DB 的队列中 - 用户每秒发送一次 Ajax 心跳。在服务器上,此心跳函数还处理队列(当由房间所有者发送时)。此外,它每次都会发送房间内用户的当前状态作为响应。

问题是:双方可能存在暂时的互联网问题,从而导致各种问题。发生这种情况的原因是,在服务器上以任意顺序处理心跳 Ajax 请求,或者在客户端以错误的顺序接收响应。因此,用户对当前状态的数据有误,UI 更改也有误。

制作这样的系统时,最好的方法是什么?我做错了什么或如何解决上述问题?

谢谢!

【问题讨论】:

标签: ajax django chat


【解决方案1】:

看看 Max 的博客 Django-Realtime-Chat 以及他是如何做到的。

【讨论】:

  • 谢谢,但我很久以前就看过这篇文章了,这不是我要在这里解决的问题。我已经切换到纯 Ajax 来更新用户状态,但问题是,如果由于 Internet 连接不良等原因导致延迟,Ajax 响应会以错误的顺序返回。或者有时只有一个请求被卡住并稍后返回 - 其中包含旧状态,然后发生各种混淆。
  • 使用文章中的系统,临时连接丢失将导致用户错过在断开连接期间发送的所有消息。而且我负担不起,尤其是在涉及状态更新等服务消息时。
猜你喜欢
  • 2013-04-20
  • 2023-02-25
  • 1970-01-01
  • 2015-01-11
  • 1970-01-01
  • 1970-01-01
  • 2021-07-10
  • 2020-10-02
  • 1970-01-01
相关资源
最近更新 更多