将通知推送给其他用户

时间:2016-03-08 23:51:18

标签: javascript

这个问题不是代码级别的问题,而只是一个功能性问题/头脑风暴。

在我的PHP脚本中,我想实时向另一个用户发送通知,我想到了这样做的一种方式,如果你知道更好的那些,请务必将它们留在评论!

我对此功能的想法是使用用户的ID和消息插入数据库表,然后在用户端不断循环选择请求,以查找与其ID内对应的通知。 _SESSION,如果发现了消息,则将其从表中删除并显示给用户。

这似乎可以"应变"我的数据库和我想知道是否有更清洁的方法来做到这一点,如果有人可以发布一个带有3秒延迟的javascript循环和一个ajax帖子到其中的php文件,也会非常感激,

全心全意,

詹姆斯

3 个答案:

答案 0 :(得分:2)

更简洁的方法是使用websockets。轮询,长轮询和流媒体将完全解决您认为的问题。

消息接收者还需要通过websockets通过广播进行监听。服务器将通知所有侦听该特定事件的websockets。

您不希望阻止数据库读写。只需从一个用户处获取操作并将其发送到侦听该事件的所有其他websockets(其他用户的客户端实例)

对于事件历史记录,您可以考虑使用消息队列持久保存到数据库。

答案 1 :(得分:1)

使用正确索引,结构良好的表格,它根本不会对数据库造成压力。当然,这假设你的间隔是合理的(你提到的3秒很棒)。这就是所有实时会话检查网站的工作方式。那些需要更多的东西,比如聊天系统,基本上是更频繁和/或更大数据包传递数据的东西,他们使用websockets

答案 2 :(得分:0)

使用WebsocketsServer-Sent-Events

只是一个想法:

  1. 用户1向服务器{"message" : "hello", "target" : "User-2"}
  2. 发送消息
  3. 服务器检查邮件并将其重定向到目标用户
  4. 用户2侦听来自Websocket或Server-Sent-Events的事件