我已经阅读了很多与此相关的问题,但没有一个令人满意。
现有应用
使用 Expressjs 实现的极简主义社交网络 API。使用 MySql 作为数据库。 socket.io 用于通知和 ember.js 作为前端框架。
我要整合的内容
我想只实现XMPP的一些功能,例如
- Peer 2 Peer Messaging
- 在场和上次见到
- 群聊
- 阅读回执
我从阅读类似问题中得到的一个基本想法。
- 需要客户端库(Strophe.js,Converse.js)
- 需要XMPP服务器(ejabberd,Openfire,Prosody)
醇>
问题
我问的问题可能过于广泛。但仍然不知道如何使用哪种技术。
答案 0 :(得分:1)
出于学习目的,您可以使用ejabberd + converse.js实现所有目标 以下步骤将在ubuntu中设置环境
通过编辑ubuntu中的 / etc / hosts 文件来创建主机绑定
127.0.1.2 talk.rajesh6115.local
使用
安装apache2sudo apt-get update
sudo apt-get install apache2
在您的apache中为bosh(XEP-0206)设置虚拟主机,如下所示 /etc/apache2/sites-available/talk.rajesh6115.local.conf
<VirtualHost *:80>
ServerName talk.rajesh6115.local
ServerAlias www.talk.rajesh6115.local
ServerAdmin webmaster@talk.rajesh6115.local
DocumentRoot /var/www/talk.rajesh6115.local
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
ProxyPass /http-bind http://talk.rajesh6115.local:5280/http-bind/
ProxyPassReverse /http-bind http://talk.rajesh6115.local:5280/http-bind/
</VirtualHost>
现在您可以将converse js配置为指向您的bosh服务,然后开始通信
注:
通过添加如下所示的行
在ejabberd中设置虚拟主机 hosts:
- "talk.rajesh6115.local"
设置管理员登录。使用此登录信息,您可以创建用户。
admin:
user:
- "admin": "talk.rajesh6115.local"
7.最终如何与Web应用程序集成?
Method1(简单): 对webapp和xmpp使用相同的登录意味着rajesh@talk.rajesh6115.local可以是一个电子邮件地址也是一个有效的jid
<强>方法2:强> 使用身份验证服务器,验证成功后将返回jid和密码,然后使用提供的凭据启动xmpp会话。
答案 1 :(得分:0)
我建议使用socket.io,因为您当前正在使用JWT身份验证,它可以使用NodeJS实现身份验证。您可以在socket.io中创建所谓的呼叫室,以便对等到消息或goroup聊天。我读了你的评论,因为它是为了学习目的,Mysql足够可扩展。为了使用像nginx这样的负载均衡器的性能,甚至可以使用具有水平缩放技术的NodeJS负载均衡器,可以轻松扩展性能。希望它有所帮助。
答案 2 :(得分:0)
鉴于您最初的想法如何解决此问题,我建议您查看node-xmpp-client和node-xmpp-server。
这是一组优秀的库,您可以使用它们在nodejs级别上完全集成您的应用程序。因此,您可以自己控制身份验证(使用应用中的现有用户/ pws?),并在(群组)聊天中的消息出现时收到通知。
当然,您可以使用现有服务器(如韵文或ejabberd)作为聊天的后端。根据我的经验,将node-xmpp-client集成在一起并不多。但是构建/运行带有nodejs的XMPP服务器(实际上可以与其他服务器通信)并不是那么简单 - 不幸的是,抛出的示例会产生更多的结果。
此外,XMPP是基于文本的,实际上更糟糕的是,基于xml ...它并不是真正有效的定义。更不用说支持node-xmpp的所有模块的复杂性:)
<强>因此强>
如果您担心性能并且不需要XMPP本身,并且实际上只需要上述功能,则XMPP是错误选项。这对你的原始目的来说太浪费了。
因此zmq之类的内容可以让您实现群聊和个人聊天。
redis可用于保存聊天记录,状态信息和消息接收。
据我所知,没有一个节点库可以免费提供你想要的东西,而恕我直言,使用XMPP的方式比使用zmq和数据存储区等工具实现你自己的功能更难。< / p>