我想在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