2012-07-10 34 views
18

Tôi đang xây dựng một ứng dụng xã hội và tự hỏi làm thế nào facebook đạt được thông báo của họ. Như bạn biết, thông báo của facebook là ngay lập tức. Ngay sau khi ai đó thực hiện hành động, mọi người sẽ được thông báo.Các thông báo tức thì như Facebook

Tôi cho rằng họ không có truy vấn nào chạy trên cơ sở dữ liệu mọi lúc.

Ai đó có thể chỉ cho tôi đúng hướng. Cảm ơn

+1

Câu hỏi khá mở một chút vì có rất nhiều lựa chọn thay thế. Bạn sẽ cần một cái gì đó để cho phép máy chủ đẩy tới máy khách. [Câu hỏi cũ của StackOverlow có thông tin] (http://stackoverflow.com/questions/471780/asp-net-http-server-push-to-client) –

Trả lời

25

Vì câu hỏi của bạn được gắn thẻ C#, ASP.NET, bạn nên sử dụng thư viện tuyệt vời SignalR. Về cơ bản SignalR cho phép bạn gửi thông báo đẩy tới khách hàng. Kỹ thuật cơ bản chính xác mà nó sử dụng bị ảnh hưởng bởi khả năng của Máy chủ và Máy khách.

Có một lớn thời gian thực trang web chat gọi jabbR đó được xây dựng trên đầu trang của SignalR:

http://jabbr.net/

Dưới đây là một số liên kết hơn là bạn nên bắt đầu.

8

Facebook sử dụng giao thức nhắn tin (được thiết kế) được gọi là Thrift. Điều này cho phép thông báo từ khách hàng đến máy chủ có độ trễ rất thấp. Tôi sẽ tưởng tượng các bản cập nhật trên máy chủ sẽ được kích hoạt tùy thuộc vào hành động của người dùng và người dùng có liên quan được đăng nhập sẽ được thông báo bởi cùng một cơ chế.

Sử dụng giao thức nhắn tin như tiết kiệm (cũng xem Protocol buffers) khách hàng không phải thăm dò ý kiến ​​máy chủ để cập nhật, thay vào đó máy chủ có thể đẩy thông báo cho khách hàng. Để thực hiện điều này, máy chủ cần phải có khái niệm về người đăng nhập vào bất kỳ lúc nào (Đăng nhập, bắt tay đăng xuất) và của họ, những người sẽ nhận được thông báo từ một hành động cụ thể của khách hàng.

Nói dễ hơn làm, nhất là khi bạn có 800 triệu người dùng tiềm năng đăng nhập!

0

Bạn có thể muốn có một cái nhìn tại http://nodejs.org/ - nó là một mô hình hướng sự kiện, lý tưởng hoàn hảo cho kịch bản thông báo 'mạng xã hội'/tức thì.

FYI: Bạn cũng có thể thấy rằng việc sử dụng cơ sở dữ liệu không phải SQL như MongoDB (http://www.mongodb.org/) sẽ nhanh hơn rất nhiều khi truy vấn từ DB từ mỗi đối tượng 'người' trong một kịch bản mạng xã hội có thuộc tính duy nhất của riêng mình - mà trong một cơ sở dữ liệu SQL bình thường khó thiết kế.

Các vấn đề liên quan