标签: comet

在C#中实现Comet服务器

我想知道是否有办法在C#中编写一个彗星服务器.我有一个定期生成数据的C#代码,我想将这些数据推送到java应用程序.所以想将我的C#代码转换为彗星服务器.还想知道是否有任何实现的彗星服务器允许我们将C#应用程序和Java应用程序连接到它,以便C#应用程序可以通过彗星服务器将信息传递给Java应用程序.数据推送频率会很高,但单个消息的大小非常小:字符串值.

c# java interop comet

6
推荐指数
1
解决办法
2677
查看次数

Java中的彗星HTTP模式

我正在编写/将C++ HTTP事件服务器移植到Java.我想知道用Jetty,Tomcat,任何其他服务器或本机实现彗星的最佳范例是什么.

  • 螺纹
  • 延续
  • NIO
  • Servlet 3.0

可伸缩性是绝对必须的,因为我正在开发一种每个客户端最多使用3个并发连接的新协议.

任何帮助表示赞赏.

PS:如果可能的话,我也希望看到一些示例代码或教程..

java tomcat comet jetty

6
推荐指数
1
解决办法
2356
查看次数

将Rails与Comet服务器集成的设计模式

我有一个Ruby on Rails(2.3.5)应用程序和一个APE(Ajax Push Engine)服务器.在Rails应用程序中创建记录时,我需要将适用通道上的新记录推送到APE服务器.可以通过控制器的创建操作在传统路径中在rails应用程序中创建记录,也可以由多个事件计算机创建记录,这些事件计算机在看到满足特定条件的数据时不断监视各种输入流并创建记录.

在我看来,将数据推送到APE服务器(然后将其推送到客户端)的代码的最佳/最合适的位置在Model的after_create挂钩中(因为并非所有记录创建都将流经控制器的创建动作).

最后需要注意的是,我想将一段格式化的HTML推送到APE服务器(而不是数据的JSON表示).我想这样做的原因是1)我已经有逻辑在现有的部分中产生所需的布局2)我不想创建部分的javascript实现(javascript采用JSON对象并创建所有的HTML周围它的演示).这很快就会成为维护的噩梦.这个问题是它需要在模型中"渲染"部分(我无论如何都无法做到,因为当它们以这种方式渲染时似乎无法访问助手).

无论如何 - 只是想知道组织所有这些的正确方法是什么.

谢谢

design-patterns renderpartial ruby-on-rails comet

6
推荐指数
1
解决办法
1178
查看次数

C#HttpWebResponse Comet问题

我想知道我将如何阅读与HttpWebRequest和HttpWebResponse的持久连接.问题似乎是GetResponseStream()函数在返回之前等待关闭服务器连接.

有没有其他简单的方法来读取彗星连接?不起作用的示例.

// get the response stream
        Stream resStream = response.GetResponseStream();

        string tempString = null;
        int count = 0;

        do
        {
            // fill our buffer
            count = resStream.Read(buf, 0, buf.Length);

            // as long as we read something we want to print it
            if (count != 0)
            {
                tempString = Encoding.ASCII.GetString(buf, 0, count);
                Debug.Write(tempString);
            }
        }
        while (true); // any more data to read?
Run Code Online (Sandbox Code Playgroud)

.net c# comet httpwebrequest httpwebresponse

6
推荐指数
1
解决办法
2111
查看次数

PHP + Comet(长轮询)扩展/主机

我使用PHP/MySQL开发了一个使用彗星技术的应用程序,主要是长轮询.概念验证工作得很好,但我希望流量可以快速到达成千上万的同时连接=网络服务器上的数千个开放连接.

我没有能力设置我自己的服务器(例如使用lighttpd),并且通常依赖简单的5美元/月PHP托管来进行其他Web项目.但是,我意识到那些不会做的伎俩,因为它们并不意味着支持如此大量的同时开放的连接.

我还有什么其他选择?我找不到任何专门用于彗星应用的主机.

谢谢

php ajax comet reverse-ajax long-polling

6
推荐指数
1
解决办法
2328
查看次数

通过HTTP进行实时双向JSON-RPC通信

我正在构建一个通过HTTP接受请求的JSON-RPC服务器.我想支持双向通信(客户端和服务器都可以发送请求),具体用例是发布/订阅架构,客户端发送subscribe(X)请求并changed(X)(几乎)实时接收请求.据我所知,有几种方法可以通过HTTP实现这一点:

  • 长期民意调查
  • 的WebSockets
  • 使用基于cookie的会话模型轮询呼叫
  • 流(保持HTTP连接打开)
  • 上面的一些组合

我正在寻找的是一种基于公认的互联网标准(如果可能)的解决方案,可以从网络浏览器使用,并且易于在客户端使用.到目前为止,我赞成流式传输(Twitter,CouchDB这样做),但我不确定它在浏览器和JSON-RPC库中的支持程度.此外,还有其他方法可以做到,我不知道.

先感谢您.

javascript streaming comet http json-rpc

6
推荐指数
1
解决办法
3506
查看次数

Comet/Reverse AJAX的现代实现如何工作?任何稳定的C#WCF或ASP.NET实现?

实现Comet,HTTP Push或Reverse AJAX的正确方法(或最佳方式)是什么?

你会推荐什么.NET实现?

asp.net wcf comet reverse-ajax push-notification

6
推荐指数
1
解决办法
1887
查看次数

实现AsyncContext通知程序线程

这是场景:

  • 典型的网络推送/彗星应用程序,其中必须同时将短消息推送到3000-4000个连接用户;
  • AsyncContext在Tomcat 7上使用Servlet 3.0()从1个线程/连接模型转移到新实现;

我需要帮助理解的一件事是实现"通知器"机制的最佳/最安全的方法.

最简单的方法是标准示例:1个线程等待新消息,然后循环AsyncContexts列表并调用aCtx.getResponse().getWriter().print(message)每个消息.

现在,我担心的是当连接速度较慢的客户端时会发生什么(并且考虑到我们可能有1000个,这种情况总是如此).通知程序线程是否会被阻塞或浪费太多时间等待这些慢速客户端并影响每个人?这可能是微不足道的,但我不清楚"写入"是否为异步或阻塞,或者输出缓冲区是否至少会补偿这一点.

或者更好的是为每个连接的客户端创建一个Runnable(将会这样做aCtx.getResponse().getWriter().print(message))并Executor使用固定的线程池将其提交给一个?我不确定是否创建让我们说一次4000 Runnable(对于每条消息)有意义或性能如何.

最后一点,是否有人使用Tomcat 7为这种应用程序(asynch servlet)提供真实/生产经验?我应该考虑在这个领域做好生产吗?谢谢.

asynchronous servlets comet tomcat7

6
推荐指数
0
解决办法
442
查看次数

PHP聊天活跃用户

我已经使用jquery和PHP为站点添加了聊天功能,它似乎通常运行良好,但我担心可扩展性.我想知道是否有人有一些建议.对我而言,关键领域是有效管理谁是谁的意识.

detail:我还没有实现long-polling(还),我担心PHP(Apache)中长时间运行的进程的原始数量会失控.

我的代码运行一个定期的jquery ajax轮询(4secs),它首先更新db以说我是活动的并设置时间戳.然后有一个例程检查所有活动用户的时间戳,并将那些外部(10分钟)设置为非活动状态.到目前为止,我的研究结果相当正常.但是,我认为如果我允许每个活动用户检查每个其他活动用户,然后每个人都更新数据库以启动非活动用户,那么我将获得重复工作,记录锁和不必要的服务器负载.

所以我已经实现了"清扫工"的作用.这只是在线用户之一,他继承了清理人员的角色.其他人只是检查是否存在"清扫器"(DB读取)并继续.如果他们检查时没有扫地机,他们会自己扫地(DB写自己的记录).如果有多个,请自己"清扫",随意睡觉并再次检查.

我的理论是,这种方式只有一个用户定期在相关表上写几个记录的更新,其他人都在阅读或只是写自己的记录.所以它工作正常,但问题可能是该过程需要一些DB读取,实际上可能效率低于让每个人像我提到的其他研究一样进行清理.

到目前为止,我已经有超过100个并发用户正常运行,但客户希望扩展到几百个,甚至超过1,000个,我不知道在这个阶段是否这个想法是好的.

有没有人知道这是否是一个好的方法,它是否可以扩展到数百个活跃用户,或者你是否可以推荐一种不同的方法?

另外,实际聊天消息的长轮询/彗星似乎很简单,我已经为代码找到了一个很好的资源,但是有一些博客评论表明它对PHP和apache特别危险.活动线程等.使用usleep和session_write_close可以最大限度地减少影响.

任何人都可以为数百名活跃用户设置PHP长轮询的实际经验,也许你可以放心吧!我真的希望将其迁移到node.js(没有经验)吗?

先感谢您

托尼

php mysql jquery chat comet

6
推荐指数
1
解决办法
1152
查看次数

如何通过WebAPI2进行C#Ajax Comet?

我有一个使用Ajax Comet长轮询的C#ASP.Net(非MVC)项目.网页对由实现IHttpAsyncHandler的类处理的端点进行HTTP调用.

如果没有任何内容(在n秒内)报告给网页,则会发送空的HTTP响应,并重新调用网页.如果有要发送的内容,则发送更新,并且网页会处理并重新呼叫.这是非常标准的推送技术,效果很好.

现在我正在尝试使用WebAPI2,非MVC添加API端点.我有基于ApiController类的同步控制器工作.

我想为API调用设置推送技术,以便API用户不必轮询更新.

与上述方法类似,接收API端点调用,并存储上下文.如果超时到期,则呼叫返回空,呼叫者应再次呼叫.如果数据在超时内更新,则数据将返回给调用者,然后调用者将再次调用并等待更多更新.

问题是似乎没有ApiController的异步版本.目的是释放处理API调用的线程,将其返回到池中,然后当有可用数据或超时到期时,使用工作线程返回响应.

如何设置ApiController,以便释放处理调用的线程,存储调用上下文,我可以在以后的某个时间点发送响应?

c# ajax comet long-polling asp.net-web-api2

6
推荐指数
1
解决办法
450
查看次数