2012-07-15 79 views
2

我是網絡開發新手,並且正在努力完成一個金字塔網站,但我想擁有某種消息服務並且不知道從哪裏開始。如何在金字塔內設置消息/通知服務?

我想要一些類似Quora或者stackoverflow的地方的警報發送給用戶(也許他們可以互相發送信息)。我需要做什麼?有沒有可以幫助我理解所涉及的所有內容的庫或教程,還是僅爲消息創建數據模型並查詢數據庫?我想要一種方式允許用戶跟蹤其他用戶的活動並相互通信,我不想重新創建電子郵件。

有沒有一種簡單的方法可以做到這一點,可以與金字塔一起使用?

更新:我找到了一些資源,我想我有一個想法。這將是巨大的學習,如果有一個比較公認的做這件事的方式,但我想我可以創建這個結構和它查詢新郵件每隔x秒:

CREATE TABLE `messages` (
`message_id` int(11) NOT NULL auto_increment, 
`from_user` varchar(65) character set latin1 collate latin1_general_ci NOT NULL, 
`to_user` varchar(65) character set latin1 collate latin1_general_ci NOT NULL, 
`message_title` varchar(65) NOT NULL, 
`message_contents` longtext NOT NULL, 
`message_read` int(11) NOT NULL default '0', 
PRIMARY KEY (`message_id`) 
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=21; 
+0

通過「消息」和「警報」 - 你是指即使沒有用戶刷新頁面的那些即時通知出現在SO上? E.q. 「這個問題的1個新答案,點擊這裏加載答案」?或者你對這方面不感興趣,只想要更靜態的東西,類似於phpbb論壇的「個人消息」功能? – Sergey 2012-07-15 21:15:14

+0

@Sergey我對學習如何創建後端消息系統更感興趣。我認爲你的描述可以通過客戶端JavaScript來保持檢查或推送到瀏覽器的區別?理想情況下,我希望它是實時的。 – Lostsoul 2012-07-15 21:44:55

回答

2

你得到的基本思路:你只需要一個表來存儲消息。只要您不處理廣播消息,單個表就足夠了。

關於你提出的結構的幾點意見:

  • 如果你不知道它,你應該看一看sqlalchemy。這是處理數據庫的好工具,它通常與金字塔一起使用。
  • 您應該使用用戶表中的密鑰from_userto_user代替存儲名稱以避免浪費空間。
  • 如果您的應用程序應該處理多個請求,您應該考慮對某些列進行索引,具體取決於您所做的查詢。如果您經常查詢來自某個用戶的所有消息,請索引from_user。如果您查詢某個用戶的所有未讀消息,請使用from_usermessage_readhow to do it in sqlalchemy)上的複合索引。這應該會大大加快你的請求。