Ajax Chat 长轮询
Posted
技术标签:
【中文标题】Ajax Chat 长轮询【英文标题】:Ajax Chat long polling 【发布时间】:2012-08-16 04:33:58 【问题描述】:看完this post,我决定自己写一个聊天应用。
与上面的帖子不同,我的应用程序允许更多轮询,例如当用户按下任意键时(以通知另一个用户 1 正在写东西),显然当用户发送消息时。
这会导致一些问题:通常没有一个通知被正确读取,并且发送的消息并不总是从另一端读取。
如果有某种方式可以发送和接收不同类型的通知(消息、关于新写作的提醒、新用户加入等...),那就太好了。
我该如何解决这个问题?
【问题讨论】:
看看彗星。 en.wikipedia.org/wiki/Comet_(programming) 看看“神奇的 SignalR”signalr.net 我想在不使用第三方解决方案的情况下实现我的自定义库.. 实现这一切需要大量的工作,而且绝对不是一个 *** 答案所能容纳的。所以使用 SignalR。如果您不想使用它并重新发明***,那么请开始重新发明它们,但在这里只询问有关您的实施的非常具体的问题,而不是仅仅询问如何编写聊天应用程序,因为这没有任何意义。 XMPP 是一种协议,旨在完全按照您的要求进行操作。我建议考虑使用像Strophe 这样的库在它之上构建。正如 Darin 所说,如果您真的想从头开始构建它,那么您的问题范围对于单个 *** 问题来说太大了。 【参考方案1】:Signal R 是您问题的解决方案。我了解您想开发自己的解决方案,并且阴谋可能很诱人,但请考虑研究 SignalR - 能够掌握和操纵 SignalR 将带来好处,并让您更轻松地解决类似问题 - 它是添加到您的开发库中的绝佳工具。
事实上,无论如何继续开发您的解决方案,但让 SignalR 一次性完成其他项目或其他项目,作为在 .net 中实现此类客户端服务器通信的事实上的方法,它确实值得一看。可以使用下面的链接在 NuGet 上找到它,因此只需点击几下!
http://nuget.org/packages/SignalR
【讨论】:
【参考方案2】:很高兴地通知您,我的聊天应用程序现在正在运行。
问题是关于在同一个 javascript 事件处理程序中两次调用 wcf 服务(发送消息按钮,我在其中通知了新消息和警报,例如“用户没有写任何东西”,是的,我需要重置以前的警报(“用户正在写消息..”)。
现在我可以发送和接收许多通知并且一切正常。我已经用 10 个聊天页面对其进行了测试。
当然,我知道通过使用您建议我的框架,我可以实现更多的功能和稳定性,但我很高兴找到了一个相对简单、可定制且良好的解决方案。
【讨论】:
以上是关于Ajax Chat 长轮询的主要内容,如果未能解决你的问题,请参考以下文章