首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何即时通知已登录的用户短信

如何即时通知已登录的用户短信
EN

Stack Overflow用户
提问于 2011-09-18 19:54:09
回答 3查看 171关注 0票数 0

简短的任务描述:我希望一个登录的用户能够发送一个即时短纯文本消息给另一个登录的用户。该解决方案需要易于扩展,并且在带宽和服务器负载(以及$$)方面不需要太多资源。

第一个想法是做客户端轮询,但这个想法很快就被放弃了,因为它不符合可伸缩性要求。因此,在那之后,我开始研究并接触到许多概念,包括套接字、node.js、xmpp。信息量有点大,所以我希望能得到一些建议,为我指明正确的方向。希望有现成的托管解决方案。

@epascarello:感谢您的快速响应。我说了,但没有详细说明。在深入研究任何技术之前,我想知道这是我真正需要的。

大多数示例都集中在即时聊天上,但我的要求略有不同。我不需要每个登录的用户看到一条消息,但只需要一个特定的用户,它的意思是,而可以有,比如说,100000个用户登录...

@Saeed Neamati:谢谢!是的,我非常了解这两种客户端-服务器通信选项,并得出结论,拉入是不可行的。我现在正在努力寻找的是最具伸缩性的(这是主要的先决条件)和(希望)易于实现的推送选项。例如,套接字选项相对简单,但由于服务器过载(或者我错了),它似乎不能很好地扩展。node.js (至少在概念描述上)应该在这方面做得更好,但我想对这一假设进行一些确认。使用xmpp -我甚至不确定它与我的任务有多相关,以及如何处理它。

@andyuk:安迪,谢谢,是的,socket.io也是我在做研究时遇到的东西。据我所知,它需要一个需要在主机上运行的服务器模块。你知道是否有可能在任何服务器上运行,或者我需要寻找专门的托管公司?由于某种原因,THe socket.io站点无法在我的PC上运行( IE或FF都不能)。

EN

回答 3

Stack Overflow用户

发布于 2011-09-18 19:57:21

你看过nodejs chat.source code吗?

票数 0
EN

Stack Overflow用户

发布于 2011-09-18 20:06:24

听着,你只有两种客户端-服务器通信的选择。或者客户端发起一个请求(web上的HTTP请求),这被称为pull模型(就像客户端将请求从服务器拉出),服务器对此做出响应,或者服务器直接启动响应,而不接收任何请求(web上的HTTP响应),这被称为推送模型(就像服务器将数据推送到客户端)。

您所描述的polling实际上是pull模型,它确实需要从服务器获取大量资源。

但另一方面,当你想使用推送模型时,你的服务器应该知道客户端。换句话说,我们知道HTTP (基于TCP/IP)是一种无状态协议,这意味着在每次请求之后,您的连接都会关闭,服务器会丢失您并忘记您。

如果您希望服务器知道客户端,则应该使连接保持打开状态。这通常是通过一些HTTP头来完成的,比如Keep-AliveConnection

但要做到这一点,你应该阅读Comet Programming。但是,这会降低可伸缩性,因为为了实现连接和客户端之间的一对一映射,需要打开更多的连接(为了更好地理解这一点,您可以将连接看作服务器的门)。你作为客户占用的门越多,其他客户使用它的机会就越少)。

票数 0
EN

Stack Overflow用户

发布于 2011-09-19 05:41:13

查看socket.io。如果浏览器不支持web套接字,它将采用下一个最好的传输技术。

在源代码中甚至有一个chat example included

至于您对可伸缩性的担忧,由于node.js的事件驱动、非阻塞性质,它非常适合这一点。处理许多开放连接是Node的真正优势之一。

他们支持100k+用户,支持Plurk uses Node.js的实时聊天功能。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7461292

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档