如何扩展“消息读取”和“正在写...”聊天功能?

时间:2015-08-29 00:06:42

标签: node.js chat scale pusher

我已经看到很多关于如何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

我被困住了。

0 个答案:

没有答案