我想在Yii2中实现简单的通知系统。 我有一个ListView中填充的记录列表。 我想让用户为这个记录投票。每个记录只有一次。 此外,每个记录的作者都必须得到通知(如新的电子邮件一样)关于谁投票支持他的记录。 在Yii2中实现这个最简单的方法是什么? 感谢您的建议!Yii2通知系统执行
回答
使用php只有你不能这样做,你需要有一些点js。
解决方案从用户B方面来看,如果发生任何事件(事件),您在一段时间后(使用ajax)不断询问服务器。如果它确实返回结果与该Ajax并更新页面。 但是,这不是一个很好的做法。
如果你真的想要一个实时更新,您可能需要使用socket.io。然后再次使用PHP套接字是一个坏主意。
所以来这里的解决方案二:yii2 + redis + nodejs + socket
Redis的会做yii2和之间的NodeJS的通信。这个想法是,如果发生什么事件(事件或更新),yii2将发布 a event
与关联data
到redis channel
和正在侦听该通道的nodejs将捕获该事件并使用套接字发送数据(或更新)到客户端。
Here is a real time chat application tutorial using yii2+redis+nodejs+socket.
谢谢你的链接。这非常有用。但是,我可以通过哪种方式获得新连接客户端的ID?过滤邮件的最佳做法是什么(例如,如果我需要向特定用户发送邮件)?我应该为它创建一个新频道吗?或者,我应该在套接字中创建过滤器(notification.js,如上所述)?我可以发布到一个频道的发件人和目标用户的ID,但如何获得用户($ thismodel-> ID)在套接字js代码中以检查当前用户是否是真正的目标? – Dmytro
你可以在这个''io.on('connection',function(socket){'''socket.id'')里面获得套接字ID,它会给你你应该以某种方式存储它的ID,然后当发送消息给用户而不是'socket.emit'使用**'io.sockets.to(socketId).emit' **其中** socketId **是特定用户的套接字ID – leninhasda
- 1. 执行Phonegap系统通知插件
- 2. 通知系统
- 3. 通知系统
- 4. 通过系统执行无线扫描时的通知
- 5. PHP通知系统
- 6. Python:通知系统?
- 7. AngularJS通知系统
- 8. Linux:通过ptrace()执行系统调用()
- 9. 无法通过php系统执行g ++()
- 10. 通过操作系统执行程序
- 11. 通知系统中每个通知要插入多少行?
- 12. 系统通知 - iOS设备
- 13. 实时通知系统
- 14. p:poll/push的通知系统
- 15. 清除系统通知
- 16. PHP系统通知发送
- 17. Phonegap系统通知插件
- 18. Angular 2的通知系统
- 19. PHP/jQuery通知系统
- 20. Django - 实时通知系统
- 21. 通知系统设计
- 22. Rails中的通知系统
- 23. 构建通知系统
- 24. 实施通知系统
- 25. PHP PDO通知系统
- 26. 建模通知系统
- 27. WPF上的系统通知
- 28. 系统通知在后台
- 29. CakePHP通知系统与jquery
- 30. 实施通知系统
最简单的方法是使用事件。 http://www.yiiframework.com/doc-2.0/guide-concept-events.html – SiZE
感谢您的链接。据我所知,通过事件我可以获取和处理来自用户的数据(我也可以使用控制器/操作),但是如何通知用户他获得了新消息(数据库中有新记录)?有没有可以触发服务器推送的事件?或者我可以找到关于它如何工作的简单解释或例子? – Dmytro
你知道如何使用JS事件,比如onclick等吗?这是一样的。您注册事件,注册事件处理程序,触发该事件并在处理程序中处理您自己的逻辑。这可能就像发送电子邮件,更新数据库,任何你想要的东西。 – SiZE