我正在尝试为Comet提供一个实用的客户端(JavaScript)实现。(方案编制)谈到了这个理论,但我很难找到一个可行的实现。我知道这里也有一个很好的服务器端需求,但我只对它的客户端部分感兴趣。
特别是我想回答的问题是-
我试着寻找Comet框架,但是我找到的每一个框架(CometD、气氛)都有一个服务器端实现,使客户端交易对用户来说是透明的。然而,我正试图找出他们如何实现客户端的壮举。我有自己的服务器实现和协议。
发布于 2012-03-10 21:53:51
以下是我的公司如何处理这些问题:
1)如果您可以在不立即收到错误的情况下建立连接,那么您就必须假定连接已经建立。如果你没有立即收到回复(不管是坏的还是其他的),你只需假设它是否有效.为客户端带来一些困难,所以智能地使用序列ids是很重要的。
2)马上再试一次。通常,服务器会在客户端之前超时,并发送错误代码,告诉您发生了什么。只需确保在服务器端使用一些合理的东西,比如20秒的轮询时间。
3)您必须使用jsonp访问同一服务机器上的不同域名,而不是其他请求。例如,如果您的页面是从example.com托管的,那么通常有一个chat.example.com子域,因为大多数浏览器一次只允许3或4个打开的连接到同一个域名。由于同样的原产地政策,Jsonp是必要的。除此之外:测试,测试,测试。
Ryan (node.js的创建者)在这里实现了一个非常简单的聊天客户机/服务器:聊天
祝你好运!
发布于 2012-03-12 10:47:57
open事件。因此,我添加了一条规则,即当服务器接收到第一个长轮询请求时,服务器必须立即响应,以告诉客户端服务器接受此请求并建立连接。对于您的信息,如果第一个长轮询请求在指定的超时时间内未完成,则套接字对象将触发close事件。我一直在制作jQuery插座,它是一个服务器JavaScript库,并为基于浏览器的应用程序提供了一个套接字。也许这会对你有帮助。目前,它是前alpha版本,我正在编写一个涉及服务器端处理的文档。
谢谢。
https://stackoverflow.com/questions/9650375
复制相似问题