Email Yii2通知系统的实现

Email Yii2通知系统的实现,email,yii2,chat,message,vote,Email,Yii2,Chat,Message,Vote,我正在尝试用Yii2实现简单的通知系统。 我在ListView中填充了一个记录列表。 我想允许用户投票支持这些记录。每个记录只有一次。 此外,必须通知每个记录的作者(如新收到的电子邮件)谁投票支持他的记录。 在Yii2中实现这一点最简单的方法是什么? 谢谢你的建议 只有php不能做到这一点,你需要在某个时候使用js 解决方案一可以是,在用户B端,您在特定时间后(使用ajax)不断询问服务器是否发生了任何事情(事件)。如果它确实使用该ajax返回结果并更新页面。 但这又不是一个很好的做法 如果您真

我正在尝试用Yii2实现简单的通知系统。 我在ListView中填充了一个记录列表。 我想允许用户投票支持这些记录。每个记录只有一次。 此外,必须通知每个记录的作者(如新收到的电子邮件)谁投票支持他的记录。 在Yii2中实现这一点最简单的方法是什么?
谢谢你的建议

只有php不能做到这一点,你需要在某个时候使用js

解决方案一可以是,在用户B端,您在特定时间后(使用ajax)不断询问服务器是否发生了任何事情(事件)。如果它确实使用该ajax返回结果并更新页面。 但这又不是一个很好的做法

如果您真的想进行实时更新,您可能需要使用。再次强调,使用php套接字是一个坏主意

解决方案二:
yii2+redis+nodejs+socket

redis将完成Yi2和NodeJ之间的通信。其思想是,如果发生任何事情(事件或更新),yii2将发布
事件
,并将
数据关联到redis
频道
,而监听该频道的nodejs将捕获该事件,并使用套接字将数据(或更新)发送给客户端


最简单的方法是使用事件。谢谢你的链接。据我所知,通过事件,我可以从用户那里获取和处理数据(这也可以通过控制器/操作实现),但如何通知用户他收到了新消息(数据库中的新记录)?是否存在可以触发服务器推送的事件?或者我可以在哪里找到关于它如何工作的简单解释或示例?您知道如何使用JS事件,如onclick等吗?这是一样的。您可以注册事件,注册事件处理程序,触发该事件,并在处理程序中处理您自己的逻辑。这可能就像发送电子邮件,更新数据库,任何你想要的东西。编辑..)按下ENTER键,想象一下下面的情况用户A单击按钮,“用户B”获取消息“单击”。因此,逻辑应该如下:-在“用户A”单击按钮后触发事件。事件处理程序将向DB插入一行。(这很清楚)-生成事件以通知“用户B”。(这一点我仍然不明白。如何向“用户B”发送数据,而无需他方的任何操作。或者“用户B”还应定期使用Pjax检查数据库作为示例?)P.S.与此按钮的按钮和控制器/操作等附加事件有什么区别?感谢您提供链接。这是非常有用的。但我可以通过哪种方式获得新连接客户端的ID?过滤消息的最佳实践是什么(例如,如果我需要向某个特定用户发送消息)?我应该为它创建一个新频道吗?或者我应该在套接字中创建过滤器(notification.js根据前面提到的示例)?我可以将发送者和目标用户的ID发布到一个通道,但是如何在socket js代码中获取用户($thismodel->ID),以检查当前用户是否是真正的目标用户?您可以在这个
io.on('connection',function(socket))中获取套接字ID{
socket.id
将为您提供您在向用户发送消息时应该以某种方式存储的id,而不是
socket.emit
使用
io.sockets.to(socketId).emit
其中socketId是特定用户的套接字id