的想法/背景:推送通知
我想給我的用戶一個很好的小額外的功能:我要添加推送通知。這是用例:
人們在他們的個人資料頁面上留言。當某人在用戶留言簿中發佈留言時,該用戶將收到推送通知(如果他在線)。如果他不在線,下次他上線時,我們只需從數據庫中提取通知。
我正在考慮在Node.JS服務器上運行Socket.IO。我目前的應用程序是用PHP構建的(所以發佈等由PHP處理)。
所有在線用戶將使用Socket.IO連接以偵聽自己的通知。他們的套接字將被保存在服務器上的數組或散列中。
這是我心目中的流程:
- 用戶A在用戶B的留言發佈消息
- 讓Socket.IO發射到用戶B的通知(如果在線,通過Socket.IO所以知道)
- 在DB
保存的信息在這裏的問題是, '讓Socket.IO發出通知' -part。我需要一種方法來從PHP這樣做,因爲我想服務器發出此通知和而不是發佈消息的用戶。你爲什麼問?我想阻止惡意用戶創建虛假通知。因此,在僞代碼的PHP應用程序應該是這樣的:
// do some validations here ...
// This is the message that was posted
$message = array(
'from' => 'UserA',
'to' => 'UserB',
'msg' => 'Hello you'
);
// Send a notification to the user by emitting an event
socketio_emit('notification', json_encode($message));
save_in_db($message);
的問題(S):
什麼是你對這個想法?有沒有更好的方法來實現這個看似小的功能?另外,如何在PHP中執行socketio_emit()
,換句話說:我如何使用PHP與Socket.IO服務器進行通信?
非常感謝!
推送通知通過保持與服務器的連續開放連接來維護。 – 2012-07-18 20:58:55
http://stackoverflow.com/q/6933497/11963 – hangy 2012-07-18 21:03:38
@ColeJohnson我想你指的是長輪詢然後。問題實際上是:我如何使用PHP與Socket.IO服務器進行通信。 – EsTeGe 2012-07-18 21:06:35