用于实时无服务器聊天应用程序的最佳协议\技术

时间:2009-09-27 10:41:41

标签: .net communication chat xmpp

我需要在.NET应用程序(Windows客户端应用程序)中嵌入聊天功能。

要求:

  • 最好是无服务器/零配置架构(p2p),但不是必需的
  • 基于开放标准(XMPP一样)
  • .NET的实现(库)(本机C / C ++也可以)存在

你能推荐什么?目前我正在寻找XMPP / Jabber,您是否有在应用程序中使用它的经验?

2 个答案:

答案 0 :(得分:1)

嗯,如果你真的想为聊天应用程序做少服务器架构,你需要仔细评估你想要提供什么样的功能。 例如,您是否只想进行一对一聊天,群聊,状态通知,用户身份验证怎么样? 有很多方法可以解决这个问题,但我个人总是喜欢基于服务器的解决方案。

无论如何,最基本的解决方案是使用UDP多播,每个客户端都是发送者和接收者。 UDP不可靠,因此您的发件人应缓存消息,您的应用程序级协议应能够检测间隙,能够请求间隙填充数据并按顺序对输入数据进行排序。在那种情况下,基本上每个人都会看到每个人的消息(这可以在应用程序级协议上进行过滤)。

下一个最佳解决方案是每个客户端发送多播信标(公告),如果客户端有兴趣发起与某个发送者的对话,它会查看应该包含有关发送者的信息的信标,包括IP地址和港口。然后,感兴趣的一方将与信标发送者建立TCP连接,并且这两方现在可以开始直接与保证和有序的消息传递进行相互聊天。

我现在可以使用更先进的消息传递架构/协议,但我认为这没有意义。

如果我有你的要求,我会得到像http://www.coversant.net/Product/SoapBoxServer.aspx(他们有免费的快递版,一切都是用.NET构建,提供.NET API等)或获得任何其他XMPP服务器(这里是一个情侣:http://xmpp.org/software/servers.shtml)使用.NET API,如http://code.google.com/p/jabber-net/

答案 1 :(得分:0)

我不确定无服务器,因为我托管了OpenFire jabber服务器,但这个Jabber.NET库对我来说效果很好。