当我尝试使用以下commond启动我的ejabberd服务器时
/etc/init.d/ejabberd开始
它显示了以下内容,但是当我触发www.example.com:5280\http-bind时,什么也没有开始
启动ejabberd:[确定]
因为我在/var/log/ejabberd/ejabberd.log上的日志是空的,但要弄明白我尝试运行
ejabberdctl直播
并得到了以下日志,我真的不知道这特别是在这里说{error,duplicate_name}所以请任何帮助我如何摆脱这个并成功启动ejabberd.
{error_logger,{{2012,2,4},{14,28,18}},"Protocol: ~p: register error: ~p~n",["inet_tcp",{{badmatch,{error,duplicate_name}},[{inet_tcp_dist,listen,1},{net_kernel,start_protos,4},{net_kernel,start_protos,3},{net_kernel,init_node,2},{net_kernel,init,1},{gen_server,init_it,6},{proc_lib,init_p_do_apply,3}]}]}
{error_logger,{{2012,2,4},{14,28,18}},crash_report,[[{pid,<0.20.0>},{registered_name,net_kernel},{error_info,{exit,{error,badarg},[{gen_server,init_it,6},{proc_lib,init_p_do_apply,3}]}},{initial_call,{net_kernel,init,['Argument__1']}},{ancestors,[net_sup,kernel_sup,<0.8.0>]},{messages,[]},{links,[#Port<0.94>,<0.17.0>]},{dictionary,[{longnames,false}]},{trap_exit,true},{status,running},{heap_size,610},{stack_size,23},{reductions,484}],[]]}
{error_logger,{{2012,2,4},{14,28,18}},supervisor_report,[{supervisor,{local,net_sup}},{errorContext,start_error},{reason,{'EXIT',nodistribution}},{offender,[{pid,undefined},{name,net_kernel},{mfa,{net_kernel,start_link,[['ejabberd@example',shortnames]]}},{restart_type,permanent},{shutdown,2000},{child_type,worker}]}]}
{error_logger,{{2012,2,4},{14,28,18}},supervisor_report,[{supervisor,{local,kernel_sup}},{errorContext,start_error},{reason,shutdown},{offender,[{pid,undefined},{name,net_sup},{mfa,{erl_distribution,start_link,[]}},{restart_type,permanent},{shutdown,infinity},{child_type,supervisor}]}]}
{error_logger,{{2012,2,4},{14,28,18}},crash_report,[[{pid,<0.7.0>},{registered_name,[]},{error_info,{exit,{shutdown,{kernel,start,[normal,[]]}},[{application_master,init,4},{proc_lib,init_p_do_apply,3}]}},{initial_call,{application_master,init,['Argument__1','Argument__2','Argument__3','Argument__4']}},{ancestors,[<0.6.0>]},{messages,[{'EXIT',<0.8.0>,normal}]},{links,[<0.6.0>,<0.5.0>]},{dictionary,[]},{trap_exit,true},{status,running},{heap_size,233},{stack_size,23},{reductions,123}],[]]}
{error_logger,{{2012,2,4},{14,28,18}},std_info,[{application,kernel},{exited,{shutdown,{kernel,start,[normal,[]]}}},{type,permanent}]}
{"Kernel pid terminated",application_controller,"{application_start_failure,kernel,{shutdown,{kernel,start,[normal,[]]}}}"}
Crash dump was written to: /var/log/ejabberd/erl_crash_20120204-142801.dump
Kernel pid terminated (application_controller) ({application_start_failure,kernel,{shutdown,{kernel,start,[normal,[]]}}})
Run Code Online (Sandbox Code Playgroud) 我目前正在寻找如何使用我们自己的应用程序中的oauth2令牌对ejabberd进行身份验证。
是否有可用的解决方案使我能够在自己的产品中进行身份验证,然后使用该oauth2 JWT令牌针对ejabberd进行身份验证。
或者,也许是另一个问题,我该如何同步ejabberd用户和我自己的应用程序用户。
我正在为我们的用户寻找一种单一登录方式。
我看到了使用每次登录时生成的令牌更新ejabberd用户密码的建议。然后只需使用用户名和令牌登录ejabberd。但是,这听起来不像是破解,而是真正的解决方案。
有任何人对此有经验吗?我对Erlang没有任何经验。如果有人可以指出我正确的方向,那就太好了。
我已经安装并配置了Prosody服务器.它侦听标准localhost:5222.在配置文件中添加了admin - user1@example.com.对服务器的每个请求都以错误结束:
<stream:stream xmlns:stream="http://etherx.jabber.org/streams" xmlns="jabber:client" id="" version="1.0">
<stream:error>
<not-well-formed xmlns="urn:ietf:params:xml:ns:xmpp-streams"/>
</stream:error>
</stream:stream>
Run Code Online (Sandbox Code Playgroud)
作为客户,我想使用strophe.js.我只发送存在节($ pres).这是我的代码.
'use strict';
angular.module('xmppTestApp')
.controller('ChatCtrl', function () {
var vm = this;
var url = "http://localhost:5222";
var connection = null;
var output = document.getElementById("output");
function log(message) {
var line = document.createElement("div");
line.textContent = message;
output.appendChild(line);
}
function connectHandler(cond) {
if (cond == Strophe.Status.CONNECTED) {
log("connected");
connection.send($pres());
}
else {
log("not connected");
}
}
vm.connectB = function() {
var username = document.getElementById("username").value;
var password = document.getElementById("password").value;
console.info(url); …Run Code Online (Sandbox Code Playgroud) 从asmack迁移到smack 4.1 beta2.创建的muc房间不再持久.
MultiUserChatManager mucm=MultiUserChatManager.getInstanceFor(connection);
muc=mucm.getMultiUserChat(groupid+"@conference.localhost");
DiscussionHistory histroy=new DiscussionHistory();
histroy.setMaxStanzas(10);
muc.createOrJoin(username,null,histroy,SmackConfiguration.getDefaultPacketReplyTimeout());
muc.nextMessage();
Run Code Online (Sandbox Code Playgroud)
当用gajim创建时,房间是持久的.
编辑:这是我们之前使用的代码.默认情况下聊天室是持久的,
muc = new MultiUserChat(connection, groupid+"@conference.localhost");
if(!muc.isJoined())
{
DiscussionHistory histroy=new DiscussionHistory();
histroy.setMaxStanzas(10);
muc.join(username,null,histroy,SmackConfiguration.getDefaultPacketReplyTimeout());
muc.nextMessage(0);
}
Run Code Online (Sandbox Code Playgroud) 这是我在 javascript 中的代码:
var user = {};
var handlerReference = null;
var myMessages = myApp.messages('.messages', {
autoLayout: true
});
function setListener(name, jid) {
user.name = name;
user.jid = jid;
$("#chatScreenTitle").text(user.name);
handlerReference = connection.addHandler(onMsgReceive, null, 'message', "chat", null, user.jid, {matchBare: true});
}
function onMsgReceive(stanza) {
console.log($(stanza).children("body").text());
myMessages.addMessage({
text: $(stanza).children("body").text(),
type: "received"
}, 'append', true);
}
function sendMessage(message) {
if (message.length == 0) {
myApp.alert("please enter some text", "alert");
}
else {
var uniqueID = connection.getUniqueId("my:code");
var reqChannelsItems = $msg({id: uniqueID, to: …Run Code Online (Sandbox Code Playgroud) 我希望通过 ejabberd xmpp 服务器实现 WebSocket 通信...
到目前为止,我发现的唯一模块是这个存储库:
这个存储库已经 4 年没有更新了,所以我觉得使用它不是很舒服。
关于上述存储库的任何替代方案或评论?
例如,我有 20 个房间要加入。简单的解决方案是向每个房间 id 发送 20 条消息。考虑到性能,这很糟糕。
我想通过发送一条<presence>消息加入20个房间,如何实现?编写一个模块来挂钩自定义<presence>消息?但是我不知道如何编写这种模块。
目前我有 Erlang 版本 5.10.4 和 OTP“R16B03”。现在我必须在 Ubuntu 14.04 LTS(64 位)中从 6.1 版和大于 17.1 的 OTP 更新 Erlang,以便安装最新版本的 ejabberd(16.02)。
为此,我在此 URL 上尝试了说明:http : //erlang.org/doc/installation_guide/INSTALL.html 但是当我点击 make 命令时,错误来了:-
Makefile:247: /home/Hemant/otp_src_18.2/make/i686-pc-linux-gnu/otp_ded.mk: No such file or directory
make: *** No rule to make target `/home/Hemant/otp_src_18.2/make/i686-pc-linux-gnu/otp_ded.mk'. Stop.
Run Code Online (Sandbox Code Playgroud)
我尝试了另一种方式:
$ sudo apt-get install erlang
Run Code Online (Sandbox Code Playgroud)
但是当我更新了 apt-get 时,我得到了相同的版本(Erlang 5.10)。
现在我怎样才能获得最新版本的 Erlang?
如何加密mnesia数据库以及加密mnesia数据库最安全的方法是什么.
在erlang中是否有任何内置方法可以高安全性地加密和解密数据?
ejabberd ×7
xmpp ×7
erlang ×3
strophe ×2
encryption ×1
erlang-shell ×1
javascript ×1
makefile ×1
oauth-2.0 ×1
prosody-im ×1
smack ×1
ubuntu-14.04 ×1
websocket ×1