所以我理解服务器发送事件的概念(EventSource):
EventSource我很困惑的是它在服务器上是如何工作的.我看了一下不同的例子,但想到的一个是Mozilla的:http://hacks.mozilla.org/2011/06/a-wall-powered-by-eventsource-and-server-sent-事件/
现在这可能只是一个不好的例子,但是根据我的理解,服务器端如何工作有点有道理:
那有意义吗?从准确的角度来看,它真的是如何运作的吗?
我已经离开了PHP/MySQL中的舒适区域,因为语法/封装/程序化的东西会令人沮丧.
上周,我开始玩并参与一些教程,使用Node.js/Socket.IO创建实时聊天应用程序.到目前为止,我从未对WebSockets做过任何事情,而且看起来真的很酷 - 服务器和客户端之间的即时通信非常棒.
现在,请原谅我在这里缺乏理解,但是设置了HTTP,这样你就不应该能够在客户端和服务器之间保持连接 - 而且我对Comet的基本理解是它强制连接保持打开状态永远不会终止写入流并只发送NUL字节.这听起来......服务器密集.
那么WebSockets如何工作呢?如果我一次在我的聊天应用程序上有几百人,服务器不会超载吗?当我在服务器上使用PHP/MySQL时,服务器一次只处理一个请求 - 如果我每隔一秒钟使用AJAX并进行一次轮询,我想它会快速升级,因为你有数千个请求一分钟.
我的问题是,WebSockets是否适用于大型应用程序?没有真正高带宽的服务器是否实用?
我想这归结为:在频繁间隔的AJAX轮询,Comet和WebSockets之间是否存在显着的服务器负载/用户体验差异?
谢谢!
我试过阅读一些文章,但在这个主题上并不那么清楚.
有人想在下面解释我的观点:
任何形式的帮助表示赞赏.
我在服务器上运行一个API,该API处理用户连接和消息传递系统。
除此之外,我还在同一台服务器上启动了一个websocket,等待连接和其他东西。
假设我们可以通过Android应用访问此功能。
我很难弄清楚现在应该做什么,这是我的想法:
1-当用户连接到应用程序时,API将连接到websocket。我们仅允许Android应用在此套接字上侦听以获取新消息。当用户想要回答时,Android应用会将消息发送到API。API将接收到的消息本身写入套接字,该消息将由另一个用户使用的Android应用读取。这样,API可以在将消息写入套接字之前将消息存储在数据库中。
2- API不会以任何方式连接到websocket。Android应用程序会在需要时侦听并写入Websocket,并且在写入Websocket时也应向API发送请求,以便可以将消息存储在DB中。
可能以上都不正确,请让我知道
编辑
我已经理解了为什么我应该使用websocket,这似乎是拥有这种“实时”系统的最佳方法(例如,在收到新消息时),而不是强制客户端每隔x秒发出一次HTTP请求以检查是否存在是新邮件。
我仍然不了解的是,如何与我的数据库进行通信。抱歉,如果我的示例不清楚,但我将尝试继续进行下去:
我的消息传递系统需要将所有消息存储在我的API数据库中,以具有某种对话的历史记录。
但是似乎websocket必须与API分开运行,我的意思是这是另一个程序,对吗?因为它不是针对HTTP请求的
那么,API是否也应该侦听此网络套接字以捕获新消息并存储它们?