我在寻找一个可以与网页应用紧密集成的消息平台(如XMPP)
我所在的公司正在建立一个用于协作的网络应用程序集群,涉及到会计、账单、客户关系管理等内容。
我们使用的是一种叫做RESTful的技术:
- 数据库我们用的是CouchDB。
- 不同的应用程序通过http互相沟通,也和数据库进行交流。
- 此外,我们有一个单点登录的解决方案,这样当你在一个应用程序登录后,其他应用程序也会自动登录。
- 所有的应用程序都使用Python(Pylons)。
现在我们需要在这个系统中添加即时消息功能。我们需要支持网页和桌面客户端。但仅仅能聊天是不够的。我们需要实现以下所有功能(还有更多类似的需求)。
- 当有人被分配到一个任务时,他们必须收到消息。我想这可以通过某种系统守护进程来实现。
- 必须有一个选项,可以根据很多不同的属性自动将人分组。例如,必须有按地理位置、公司部门、工作类型等划分的组(所有来自不同城市和不同公司部门的程序员必须形成一个组),这样就可以向选定的组发送群发消息。
- 房间应该能够自动创建和销毁。例如,当几个人查看同一个发票时,必须自动为他们创建一个房间(并且他们必须自动加入)。当所有人离开发票后,房间必须被销毁。
- 需要从我们的应用程序中进行身份验证和授权。
我可以使用一些自定义解决方案来实现这个,比如hookbox http://hookbox.org/docs/intro.html,但这样的话我在支持桌面客户端时会遇到很多问题。
我之前没有即时消息的经验。最近我一直在阅读相关资料,主要关注像ejabberd这样的东西。但这段时间我遇到了很多困难,无法确定我想要的功能是否可行。
所以如果有经验的人能给我一些建议、文章或者关于可能性的分享,我会非常感激。
2 个回答
0
使用ejabberd、strophe和一些简单的服务器端脚本,可以实现所有目标。
- 当有人被分配到任务时,服务器端的脚本可以轻松地验证到xmpp服务器,并向被分配的JID发送消息。这是个简单的任务。
- 要把不同的人分到不同的组,只要在网页聊天应用中存储这些用户的属性,就可以轻松实现。只需在身份验证后将他们加入特定的多人聊天房间。
- ejabberd可以自动创建和销毁聊天房间。
- ejabberd有多种授权方法,包括数据库和脚本认证。
你可以看看StropheJS库,他们出版了一本很棒的书(平装本)。真的推荐你读这本书 http://professionalxmpp.com/
1
就像frx上面提到的,StropheJS团队有一本关于网页和XMPP编程的好书。不过你提到你对这种编程没有经验,我建议你可以找一些有经验的人聊聊,这样能省下不少时间。并不是说你不能尝试frx提到的内容,这可能会是一个有趣的项目 :)
我知道有一个团队做过类似的事情,和他们聊聊会对你想法的落实有帮助:http://andyet.net/ (我和他们没有任何关系,只是因为XMPP开发社区比较小,我们通常都互相认识 :)