php - 如何使用 PHP 在 openfire 中创建聊天室并将用户添加到房间中

标签 php xmpp openfire muc

我是 XMPP 服务器的新手。我想制作多用户聊天应用程序。

我已经安装了 Openfire 并且一对一聊天工作正常,但我无法创建 session (聊天)室并使用 PHP 将用户添加到房间中进行多用户聊天。

虽然我已经安装了 openfire 中可用的 MUC 服务插件,但我不知道如何使用 PHP 实现 MUC 服务 REST/HTTP。

任何人都可以为 MUC 服务提供一些示例 PHP 脚本来创建聊天室并将用户添加到聊天室吗?

提前致谢

最佳答案

基于帮助信息:

Basic HTTP Authentication

All REST Endpoint are secured by Basic HTTP Authentication.

To access the endpoints is that required to send the Username and Password of a Openfire Admin account in your header request.

E.g. Header: Authorization: Basic YWRtaW46MTIzNDU= (username: admin / password: 12345)

Example for Jersey Client

Client c = Client.create(); c.addFilter(new HTTPBasicAuthFilter(user, password));

POST /mucservice/chatrooms Endpoint to create a new chat room.

Payload: Chatroom Return value: HTTP status 201 (Created)

Possible parameters

Parameter Parameter Type Description Default value servicename @QueryParam The name of the Group Chat Service conference Examples

Header: Authorization: Basic YWRtaW46MTIzNDU=

Header: Content-Type: application/xml

POST http://example.org:9090/plugins/mucservice/chatrooms

Payload Example 1 (required parameters):

global-1 global Global Chat Room

PHP 代码将(使用 MUCservice 版本 0.2.3 Openfire 3.10.0 测试):

function createRoom($naturalName, $roomName, $description) {
    $url = "http://localhost:9090/plugins/mucservice/chatrooms";
    $data = "<chatRoom>
                <naturalName>$naturalName</naturalName>
                <roomName>$roomName</roomName>
                <description>$description</description>
            </chatRoom>";
    $username = "admin";
    $password = "12345";
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_PORT, "9090");
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
    curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
    curl_setopt($ch, CURLOPT_HTTPHEADER,
                     array('Content-Type: application/xml',
                           'Authorization: Basic '.base64_encode("$username:$password")));
    $code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $res = curl_exec($ch);
    echo "code " . $code;
    print_r($res);
    curl_close($ch);
}

createRoom("room", "room", "room");

关于php - 如何使用 PHP 在 openfire 中创建聊天室并将用户添加到房间中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28233051/

相关文章:

PHP - 如何让搜索引擎从一个日期搜索到另一个日期

java - roster.getPresence 给出不可用

performance - RHQ 会减慢系统速度吗?

java - 使用 Java 在 XMPP 服务器中创建新用户

javascript - 只允许在特定时间访问网站?

php - 弄清楚 Yii2 在使用回退时如何找到主题资源

php - 插入数据库时​​字符损坏

android - 在回复超时内未收到回复。 Smack 4.2.0 muc.join()

java - 使用 Smack 库在端口上监听 XMPP 连接

xmpp - 在 ejabberd 用户下线时离开组