首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >node-xmpp -创建持久的私密聊天室

node-xmpp -创建持久的私密聊天室
EN

Stack Overflow用户
提问于 2013-12-25 08:15:04
回答 3查看 1.6K关注 0票数 1

我需要通过Node动态创建一个不会自动删除的私人和持久聊天室。

我已经在网上搜索过了,但找不到太多该怎么做的东西。这是我用来创建聊天室的代码片段:

代码语言:javascript
复制
var cl = new xmpp.Client({
    jid: jabber_creds.jid,
    password: jabber_creds.password,
    host: jabber_creds.host,
    port: jabber_creds.port
});


cl.on('online', function() {
    var room_jid = jabber_creds.room_jid.replace("%s", chatRoomName);
    // join room (and request no chat history)
    cl.send(new xmpp.Element('presence', { to: room_jid }).
        c('x', { xmlns: 'http://jabber.org/protocol/muc' })
    );

    // create room
    cl.send(new xmpp.Element('iq', { to: room_jid, id: 'create', type: 'set' }).
        c('query', { xmlns: 'http://jabber.org/protocol/muc#owner' }).
        c('x', { xmlns: 'jabber:x:data',type: 'submit' })
    );
});
EN

回答 3

Stack Overflow用户

发布于 2013-12-25 18:51:59

聊天室持久性是在服务器端处理的,而不是在客户端。是的,客户端可以请求服务器保留聊天室,但实际上不能从客户端持久化它。请查阅您正在使用的服务器文档,以确保它支持此功能。

票数 0
EN

Stack Overflow用户

发布于 2014-01-06 19:18:26

尝试遵循XEP-0045

http://xmpp.org/extensions/xep-0045.html#createroom

只需阅读,创建和配置此类文件室的工作流程如下部分所示

你需要做下一步:

  1. Send form to a new room
  2. 服务器会返回几条消息告诉您文件室已创建,但您应该将其解锁
  3. 您应该创建配置表单并发送到服务器。在此表单中,您可以设置'Persistent‘类型& 'Only members’类型如果一切正常,
  4. 服务器将返回成功结果
票数 0
EN

Stack Overflow用户

发布于 2014-08-08 15:41:44

您可以参考https://github.com/node-xmpp/node-xmpp/blob/master/examples/create_room.js并通过XEP-0045发送您想要的配置

代码语言:javascript
复制
//create_room.js
'use strict'

var xmpp = require('../index')
    ,argv = process.argv

if (argv.length < 5) {
    console.error('Usage: node create_room.js <my-jid> <my-password> <room-name>')
    process.exit(1)
}

var cl = new xmpp.Client({ jid: argv[2],  password: argv[3] })

cl.on('online', function(data) {
    var userJid = data.jid.user + '@' + data.jid.domain,
        roomJid = argv[4] + '@conference.' + data.jid.domain,
        pres,
        iq

    console.log('Connected as ' + userJid + '/' + data.jid.resource)

    console.log('Create room - ' + argv[4])

    pres = new xmpp.Element(
        'presence',
        { from: userJid, to: roomJid + '/' + data.jid.user })
        .c('x', {'xmlns':'http://jabber.org/protocol/muc'})

    cl.send(pres.tree())

    iq = new xmpp.Element(
        'iq',
        { to: roomJid, type: 'set' })
    .c('query', { xmlns: 'http://jabber.org/protocol/muc#owner' })
    .c('x', { xmlns: "jabber:x:data", type: "submit"})
    //set room to be hidden by sending configuration. ref: http://xmpp.org/extensions/xep-0045.html
    iq.c('field', { 'var': 'FORM_TYPE' })
    .c('value').t('http://jabber.org/protocol/muc#roomconfig').up().up()
    .c('field', { 'var': 'muc#roomconfig_publicroom'})
    .c('value').t('0').up().up()

    cl.send(iq.tree())

    // exit later for sending configuration done
    setTimeout(function() {
        cl.end()
    }, 100)

})

cl.on('error', function(e) {
    console.error(e)
    process.exit(1)
})
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20768020

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档