2017-04-12 28 views
2

私は韻律を使って会議のチャットをしようとしています。クライアントのために私はstrophe.jsを使用しています。チャット履歴は、ユーザーが部屋に入室したときに表示されたチャットの履歴が完全ではないことを除いて、すべて機能します。たとえば:Prosody mucチャットの履歴が完全ではありません

1 
2 
3 
4 
5 
6 
7 
8 
9 
10 

しかし、新しいクライアントが部屋に参加すると、彼らはこのようなメッセージが出る:: は一つのクライアントは、すでにこのような部屋にメッセージを送信した

1 
3 
5 
7 
9 

私がしよう韻律設定でmax_history_messages = 10と設定し、クライアントからmaxstanzas = 10と設定します。しかし、まだ同じです。ここで

は私のconfigファイル

admins = { "[email protected]" } 
modules_enabled = { 
     "message_logging"; 
     "roster"; 
     "saslauth"; 
     "tls"; 
     "dialback"; 
     "disco"; 

     "private"; 
     "vcard"; 

     "version"; 
     "uptime"; 
     "time"; 
     "ping"; 
     "pep"; 
     "register"; 

     "admin_adhoc"; 
     "admin_telnet"; 

     "bosh"; 

     "posix"; 
}; 

bosh_ports = { 5280 } 
bosh_max_inactivity = 60 
consider_bosh_secure = true 
cross_domain_bosh = true 
http_paths = { 
     bosh = "/http-bind"; -- Serve BOSH at /http-bind 
     files = "/"; -- Serve files from the base URL 
    } 

allow_registration = true; 

daemonize = true; 

pidfile = "/var/run/prosody/prosody.pid"; 

ssl = { 
    key = "/etc/prosody/certs/localhost.key"; 
    certificate = "/etc/prosody/certs/localhost.crt"; 
} 

c2s_require_encryption = false 

s2s_secure_auth = false 

authentication = "internal_plain" 

log = { 
    info = "/var/log/prosody/prosody.log"; 
    error = "/var/log/prosody/prosody.err"; 
    { levels = { "error" }; to = "syslog"; }; 
} 

VirtualHost "localhost" 
    enabled = true -- Remove this line to enable this host 
    ssl = { 
     key = "/etc/prosody/certs/localhost.key"; 
     certificate = "/etc/prosody/certs/localhost.crt"; 
    } 

Component "conference.localhost" "muc" 
    restrict_room_creation = true 
    max_history_messages = 10 

Include "conf.d/*.cfg.lua" 

はコンフィグで設定する必要があるものはありますか?ここで

は、私がStrophe.jsでメッセージを処理方法は次のとおりです。ユーザーはちょうど部屋に参加するとき

function onLoginComplete(status) { 
    console.log(status); 
    if (status == Strophe.Status.CONNECTING) { 
     console.log('Strophe is connecting.'); 
    } else if (status == Strophe.Status.CONNFAIL) { 
     console.log('Strophe failed to connect.'); 
    } else if (status == Strophe.Status.DISCONNECTING) { 
     console.log('Strophe is disconnecting.'); 
    } else if (status == Strophe.Status.DISCONNECTED) { 
     console.log('Strophe is disconnected.'); 
    } else if (status == Strophe.Status.CONNECTED) { 
     console.log('Strophe is connected.'); 
     connection.addHandler(onMessage, null, 'message', null, null, null); 

    if (!chat_room) { 
     // join to chatroom 
    } 
} 

/** 
* on new message handler 
**/ 
function onMessage(message) { 
    console.log(message); 
    var type = $(message).attr('type'); 
    var body = $(message).find('body').text(); 
    switch (type) { 
    case 'groupchat': 
     console.log(body); 
     // todo append message to the list 
     appendMessage(message); 
     break; 
    } 
    return true; 
} 

ここで歴史の一つのメッセージです:

<message xmlns="jabber:client" type="groupchat"  to="[email protected]/edff55f2-2980-4d01-bf65-0d2c0b011845"  from="[email protected]/subkhan"><body>8</body><delay xmlns="urn:xmpp:delay" stamp="2017-04-12T02:54:48Z"></delay><x xmlns="jabber:x:delay" stamp="20170412T02:54:48"></x></message> 

は遅延とは何かはありますか?

ありがとうございます。

答えて

0

この時点では、クライアントはすべてrawInput(data)に移動する以外は、onMessage()ハンドラではなく、すべての完全なメッセージ履歴を取得しています。だから私はちょうどハンドラを削除し、受信メッセージを処理するrawInput(data)

関連する問題