我是希望能实现一个简单的。服务器。

我需要的是一个图书馆,它可以分析和了解。请求从一个客户。我已经看过嫌(下面将提到)和JSO.嫌似乎是客户只有如此的话,它可能会帮助解析数据包,它不知道如何应对客户。是JSO保持它看起来很老了。唯有希望的途径是除了拉Openfire这是整个商业(OSS)。服务器。

我只是希望一些代码行上的耐帝或Mina,这样我就可以开始处理一些消息断线。


乔-

很好的答案是什么我想要做的就是有点长-我会尽量保持简短。

有两件事情,这仅仅是松散的相关:

1)我想写一个服务器。因为我想写一个自定义的协议,为两个客户进行沟通。基本上,我想到的是一个联网的应用程序的iPhone-但是我没有想到依赖于低水平的二进制协议,因为使用的东西喜欢。味着应用程序可以在"长大"非常迅速地从一个本地的无线网络为基础的应用程序,以一种基于互联网的一个...

这封邮件交换了应该是相对较低的延迟,因此严格来讲二议定书将是最好的,但是我觉得它可能是值得探索。如果没有介绍过多的开销,这样,我可以使用它并从中获益的extensability和灵活以后。

2)我工作的兵马俑-所以我有这样的疯狂弯曲集一切。一旦我开始考虑编写一些定制服务器码,我想我想集群。兵马俑使向外扩展Java独微不足道,所以我的想法是建立一个超级简单服务器。作为一个示范程序,对陶土。基本上每个用户将连接到服务器的管理连接时,将登记册的用户进入哈希.每个用户会有一个LinkedBlockingQueue有监听器螺纹把消息的队列。然后任何连接的用户想要发送信息的任何其他用户(如任何旧的聊天应用程序的)简单的问题。消息(如往常一样)用户的连接。服务器拿起来,看起来相应的对象用户在一个地图和地方消息上的队列。由于列队集群,无论是否在目的地的用户连接到相同物理的服务器,或者不同实体服务器,消息传递和在线听捡起来并把它送回的目的地用户的tcp连接。

所以-不是太短的摘要,我害怕。但这就是我想做的事情。我想我只能写一个插件Openfire完成#1但我认为它需要照顾的很多管道所以这是很难做到#2(尤其是因为我希望对一个非常小量的代码,可以适应一个简单的10-20kb家项目)。

有帮助吗?

解决方案

http://xmpp.org/xmpp-software/libraries/ 有一个清单的软件库。.这里是一个 过时的 快照:

ActionScript

C

C++

C#/.NET/单

二郎

快闪

Haskell

Java

JavaScript

口齿不清

目标-C

Perl

PHP

蟒蛇

红宝石

Tcl

其他提示

我经历了同样的搜索。我首先尝试了Smack,然后意识到它的目标是c2s(客户端到服务器)并且没有我需要的东西。我看着Tinder,但不喜欢许可模式(当我看起来它更加原始时)。我终于看了一眼Whack并意识到这是我需要的东西 - 但是它缺少了很多(这就是我认为Tinder的原因)。

那么......我的解决方案? Forked Whack,添加了一些代码来抽象出来,并尝试使其更易于使用: http://github.com / Communitivity /阿迪朗达克

我写了一个基于它的Scala库来帮助创建基于外部组件的代理,请参阅 http://github.com/Communitivity/Shellack http://github.com/Communitivity/MinimalScalaXMPPComponent

我的主要目标之一是快速编写组件。这种组件的一个例子如下:

object Main {

/**
* @param args the command line arguments
*/
  def main(args: Array[String]) :Unit = {
      new XMPPComponent(
        new ComponentConfig() {
            def secret() : String = { "secret.goes.here" }
            def server() : String = { "communitivity.com" }
            def subdomain() : String = { "weather" }
            def name() : String = { "US Weather" }
            def description() : String = { "Weather component that also supported SPARQL/XMPP" }
        },
       actor {
        loop {
            react {
                case (pkt:Packet, out : Actor) =>
                    Console.println("Received packet...\n"+pkt.toXML)
                    pkt match {
                        case message:Message =>
                            val reply = new Message()
                            reply.setTo(message.getFrom())
                            reply.setFrom(message.getTo())
                            reply.setType(message.getType())
                            reply.setThread(message.getThread())
                            reply.setBody("Received '"+message.getBody()+"', tyvm")
                            out ! reply
                        case _ =>
                            Console.println("Received something other than Message")
                    }
                 case _ =>
                    Console.println("Received something other than (Packet, actor)")
            }
        }
       }
    ).start
  }
}

Ignite Realtime分享其 Tinder API ,这是从OpenFire中提取的基本构建块用于创建服务器端组件以及可能的其他服务器。它实现了基本的XMPP构建块,您可以从那里开始。

同样来自Ignite Realtime的是 Whack API ,专门用于构建XMPP组件

  

Whack是开源XMPP(Jabber)   XMPP组件的组件库。   一个纯Java库,它可以   嵌入到您的应用程序中   从完整的XMPP创建任何东西   组件到简单的XMPP集成   如发送拦截和   对某些信息采取行动。

您最好的选择是使用现有服务器,并为其添加功能。即使使用库,从头开始编写整个服务器也会比您预期的更难批次

您能告诉我们您正在尝试解决的问题吗?然后,我们可以为您指出一个合适的服务器,并帮助您找到合适的插件。

检查一下:

这是一个较低级别的库。它处于孵化状态,似乎没有人在推动它。但这是一个伟大的api,我希望它会进步。

http://java.net/project/jso-jabber-stream-objects

我认为您已经找到了正确的解决方案: Openfire

这不是商业解决方案。它是在Apache许可下发布的用Java编写的Mina和Jetty 之上的XMPP服务器。非常接近你所要求的。 虽然我知道您要求使用库,但为什么不使用一些稳定开发的开源软件,这些软件可以像openfire一样轻松扩展?

我找到了一个基于Java的好的xmpp服务器: http://www.tigase.org/

查看 Vorpal 。它是一个实现XEP-0114协议的Java EE 6框架。

我知道目的是在OP中建立一个小黑客。 但是,如果有兴趣扩展它,端到端的安全性, 我建议从Coversant看看Soapbox。 他们是我们的伙伴。我们在硬实时虚拟机环境中使用SMACK,JamaicaVM与Soapbox进行通信。

此外,如果目的是与服务器应用程序通信,而不是重新实现 在XMPP服务器(例如Soapbox)中,可以使用SMACK客户端。 它是XMPP服务器的客户端,但实际通信的实例可以是 通过XMPP服务器从客户端到客户端。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top