我已经看到很多关于如何scale chats
的问题,但是它们似乎都没有解决这两个可以大大增加http请求的功能的问题。
示例:
当n
personne正在聊天时,每个人都会发送一条消息,它是1个HTTP请求,以及被推回的(n-1)
个消息。
现在,每当有人“读取”消息时(例如,$(input).on('focus')
时触发),它就会(n-1)
次新的http请求,以及被推回的(n-1)²
消息。
每当有人向他开始写作的其他人发出信号时,就会发出一个新的http请求,然后是n-1
websocket消息。
但是,因为对于每条消息,他有可能根本不发送任何内容(但删除他的消息并停止写入),我们可以假设它至少会(n-1)*k
k>1
表示在发送之前写下/删除他的作品的人倾向
考虑4人聊天,其中一人向聊天发送一条消息。
案例一 - 没有功能| 1 http
个请求,3 websocket
个消息
案例二 - “邮件阅读功能”仅 | 4 http
次请求12 websocket
次消息
案例3 “正在撰写... 功能仅,k=1
| 2 http
请求,{{ 1}}消息
总结:6 websocket
vs 1 http / 3 ws
仅一条消息和假设k = 1
我正在使用6 http / 18 ws
& node.js
在我的应用程序中,在我开始实现这两个之前,我想确保我的成本不会轻易爆炸大声笑。关于Facebook如何做到这一点的任何线索,有数十亿条消息? (我不确定费用对他们来说是个问题)
是否有智能方式来实现和扩展这两个功能,例如使用websocket提供程序pusher
?
我被困住了。