我正在尝试为我们的ejabberd集群编写一个快速的负载测试脚本,只需登录聊天室,发布几条随机消息,然后退出.
我们曾尝试使用tsung进行这一特定测试,但据作者称,muc功能并没有进入这个版本.
pyxmpp似乎有这个功能,但如果我能弄清楚如何使它工作,我会变得愚蠢.这里希望有人能快速解释如何构建客户端并加入/发布到muc.
谢谢!
我在AMQP(RabbitMQ)和XMPP(eJabberd)之间选择我的基于浏览器的无闪存javascript驱动的实时回合制游戏.我对AMQP和XMPP协议知之甚少.我想使用PHP进行用户授权,并使用MySQL进行一些数据存储检索.据我所知,RabbitMQ有PHP客户端,但eJabberd没有.
我理解的是javascript客户端调用PHP脚本并操纵必要的处理然后传递给AMQP或XMPP服务器将数据传递给对手播放器.Wrox有一本很好的书"使用JS和jQuery的Pro XMPP编程",但没有PHP的例子.以下是我的问题.
1)哪种协议适合我的游戏?
2)我是否应该选择RabbitMQ才能获得PHP客户端支持?
我目前正在开发一个聊天iPhone应用程序,到目前为止,ejabberd服务器的常规配置非常好.我想在用户"离线"时实现Push通知,为此我只需运行一个PHP脚本,该脚本获取令牌设备,并通过SSL将文本消息传递给Apple的服务器(Apple部分已完成),我的问题的开始是我不知道如何将这个动作实现到我的ejabberd服务器?基本上我只需要在收到的离线消息上创建一个动作即可.有人能指出我正确的方向.我已经设法开始为新模块编写一些代码,但是当这个模块被离线消息调用时,我总是得到相同的错误,代码和错误.
module.erl
-module(mod_offline_push).
-behaviour(gen_mod).
-include("ejabberd.hrl").
-export([start/2, stop/1, send_notice/1]).
start(VHost,_Opts) ->
?INFO_MSG("Starting mod_offline_push Host: ~p", [VHost]),
inets:start(),
ssl:start(),
ejabberd_hooks:add(offline_message_hook, VHost, ?MODULE,send_notice, 50),
ok.
stop(VHost) ->
?INFO_MSG("mod_offline_push stopping Host: ~p", [VHost]),
ejabberd_hooks:delete(offline_message_hook, VHost, ?MODULE, send_notice, 50),
ok.
send_notice(Packet) ->
?INFO_MSG("after http:",[]),
Type = xml:get_tag_attr_s("type", Packet),
FromS = xml:get_tag_attr_s("from", Packet),
ToS = xml:get_tag_attr_s("to", Packet),
Body = xml:get_path_s(Packet, [{elem, "body"}, cdata]),
if
(Type == "chat") and (Body /= "") ->
Sep = "&",
Post = [
"application=",ToS, Sep,
"event=", FromS,Type, Sep,
"description=", Body, Sep, …Run Code Online (Sandbox Code Playgroud) 用于创建大型(100k +用户)Ejabberd群集的推荐Amazon EC2实例大小是多少?
我的意思是,使用大量小实例或较少数量的大型实例是否更有效/成本更低?
用于集群计算的HVM映像是Ejabberd集群的任何用途,还是标准映像就足够了?
它是将所有数据复制到每个节点还是将数据片段存储在每个节点上,然后在运行时从不同节点获取所需的每个片段?或者这是如何工作的?
如果您使用MySQL而不是Mnesia,群集是否仍能正常工作?
到目前为止,我已经成功安装了ejabberd并注册了两个用户进行一对一的聊天.在客户端我使用了strophe并且正常工作与一对一聊天.现在我正在进行多用户聊天,并且必须创建有限用户的聊天室才能访问这个房间.创建MUC的程序是什么?是否有任何命令行界面,如"注册用户名主机名密码",如创建用户.
请帮助我,因为没有适当的ejabberd文档,请建议任何有关创建多用户聊天的好教程.
如何知道该消息是使用XMPP framework和传递给其他用户ejabberd,我们使用XEP-0184类消息传递收据,我们发送收据请求,同时发送消息,但没有得到任何响应.
我的查询应该是我需要在服务器上配置任何内容(或ejabberd.cfg文件中的任何更改),或者我们需要做的任何客户端代码.
我正在阅读http://xmpp.org/extensions/xep-0313.html以查询Ejabberd以查找使用特定用户存档的邮件.
这是我发送的xml:
<iq type='get' id='get_archive_user1'>
<query xmlns='urn:xmpp:mam:tmp'>
<with>user1@localhost</with>
<set xmlns='http://jabber.org/protocol/rsm'>
<max>20</max>
</set>
</query>
</iq>
Run Code Online (Sandbox Code Playgroud)
我正确收到了前20封邮件.要再次请求我添加标签:
<after>(id in element "Last" from last request)</after>
Run Code Online (Sandbox Code Playgroud)
这也很好.我需要的是接收最后20条消息,而不是前20条消息.我怎样才能做到这一点?
我正在学习xmpp编程,我在我的ubuntu 15.10上安装了ejabberd sudo apt-get install ejabberd,然后通过添加管理员用户配置了安装ejabberdctl register admin localhost password.但每当我尝试localhost:5280 从我的firefox浏览器访问时,它会重定向到我www.localhost.com:5280说的那个server not found.另一方面,Chrome浏览器说ERR_EMPTY_RESPONSE- 无法加载网页,因为服务器没有发送任何数据.
我试过localhost:5269,它返回:
<?xml version='1.0'?>
<stream:stream xmlns:stream='http://etherx.jabber.org/streams' xmlns='jabber:server' xmlns:db='jabber:server:dialback' id='923657800'>
<stream:error><xml-not-well-formed xmlns='urn:ietf:params:xml:ns:xmpp-streams'>
</xml-not-well-formed></stream:error></stream:stream>
Run Code Online (Sandbox Code Playgroud)
我有什么问题/etc/ejabberd/ejabberd.yml吗?我也应该发布吗?
请帮忙.谢谢.
编辑:添加了ejabberd.yml
###
### ejabberd configuration file
###
###
### The parameters used in this configuration file are explained in more detail
### in the ejabberd Installation and Operation Guide.
### Please consult the Guide in case of doubts, it …Run Code Online (Sandbox Code Playgroud) 我使用ejabberd 18作为xmpp服务器,要使用实现mod_push的推送通知,我们需要将ejabberd服务器连接到扩展ejabberd 18的App服务器,是否有可用的插件或扩展?其他任何启用推送通知的方式。
如果我错了,请纠正我。