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

Posted

技术标签:

【中文标题】如何使用 PHP 在 openfire 中创建聊天室并将用户添加到房间中【英文标题】:How to create a chat room and add users into the room in openfire using PHP 【发布时间】:2015-03-29 18:16:08 【问题描述】:

我是 XMPP 服务器的新手。我想做多用户聊天应用。

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

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

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

提前致谢

【问题讨论】:

我有同样的问题任何人帮助我。我将支付 2000 美元 【参考方案1】:

根据帮助信息:

基本 HTTP 身份验证

所有 REST 端点均由基本 HTTP 身份验证保护。

访问端点需要发送用户名和 标头请求中 Openfire 管理员帐户的密码。

例如标头:授权:基本 YWRtaW46MTIzNDU=(用户名:admin / 密码:12345)

泽西岛客户端示例

客户端 c = Client.create(); c.addFilter(new HTTPBasicAuthFilter(用户, 密码));

POST /mucservice/聊天室 用于创建新聊天室的端点。

负载:聊天室返回值:HTTP 状态 201(已创建)

可能的参数

参数 参数类型 说明 默认值 servicename @QueryParam 群聊服务会议名称 例子

标题:授权:基本 YWRtaW46MTIzNDU=

标题:内容类型:应用程序/xml

发布http://example.org:9090/plugins/mucservice/chatrooms

Payload 示例 1(必填参数):

全球-1 全球的 全球聊天室

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");

【讨论】:

我需要在我的 xmpp 上安装插件聊天室吗?我的意思是你已经设置了 url localhost:9090/plugins/mucservice/chatrooms 请帮忙! :) 我试过你的代码它返回代码 0 我在这里做错了什么?据我所知,0 代码意味着 curl 找不到我正在寻找的服务器! :( 但我再次传递了正确的 url!以确认我已从该特定 url 成功创建用户。 在我的 MUC 服务显示下的 openfire 管理员中(已弃用)请使用 REST API 插件。通过 REST 接口进行 MUC 管理。 嗯,我使用 Muc 服务版本 0.2.3 用于 openfire 3.10.0。您使用的是哪个版本的 MUC 服务? 我确实使用 Muc 版本 0.2.3 和 Openfire 3.10.2,但在插件部分 Muc 服务描述中它说:(已弃用)请使用 REST API 插件。通过 REST 接口进行 MUC 管理,所以我搜索了community.igniterealtime.org/blogs/ignite/2015/02/06/…,但又一次!它显示已弃用!

以上是关于如何使用 PHP 在 openfire 中创建聊天室并将用户添加到房间中的主要内容,如果未能解决你的问题,请参考以下文章

通过 PHP 在 openfire MySQL 中创建加密密码

如何使用 XMPPHP 在 Openfire 中创建会议室?

openfire用户和名册用户之间的区别

如何使用 XMPP 与 PHP 进行聊天过程

除了数据库,openfire 在哪里存储名册值?

php 使用Pusher在PHP中创建的实时聊天应用程序:https://www.cloudways.com/blog/real-time-chat-app-php/