2

我需要为基于 android 的客户端创建一个聊天/通信服务器。

android 聊天客户端将通过 3g 或 wifi 网络连接到互联网我需要以下简单功能

  • 注册一个新用户
  • 从一个客户端向另一个客户端发送消息
  • 一次将连接大约 500 个客户端

来自桌面应用程序开发,我脑海中只有基于套接字的解决方案,并且服务器应该是基于 Java 的应用程序

所以问题是:基于套接字的方法是否可行,或者我应该使用其他一些通信协议。

4

2 回答 2

6

虽然使用 TCP 套接字可以完成这项工作,但这不是一个好主意,因为您必须处理很多事情,例如消息格式化、流式传输等。使用已经可用的消息传递协议和库之一。

我建议研究XMPP,它有一套用于在设备之间实现消息传递的开放标准。一个优点是有大量的库可用于实现 XMPP 客户端和服务器。

要在 Android 设备上实现 XMPP 客户端,您可以使用名为Smack的库。它实际上是一个基于 Java 的库。我已经使用Asmack实现了 Facebook XMPP 聊天客户端,它是 Smack 的 Android 端口。Smack 文档也适用于 Asmack。但是,Asmack 已经两年没有更新了,并且存在一些问题,我一直在考虑将我的客户端更改为 Smack,以查看新版本是否与 Android 兼容。

至于实现 XMPP 服务器,您可以查看由制作 Smack 的同一个人制作的Openfire 。我还没有使用它,但是项目页面有大量关于设置 Openfire 的文档。从我使用的 Smack 库的质量来看,我敢说 Openfire 会很好地工作。

祝你好运!

于 2012-10-01T06:42:38.843 回答
0

服务器的另一端用什么编写并不重要,因为 HTTP 是一种高级协议。实际上,您可能最终会使用套接字,除非您对GCM做一些事情。套接字是重量级的电池,您可能只想偶尔保留套接字,以便以与应用程序使用成比例的速率检查聊天服务器上的更新。还请记住,您不能在主线程上保持网络连接,它通常会通过服务访问。

于 2012-10-01T05:35:03.657 回答