gpt4 book ai didi

xmpp - 高效的 XMPP 用户搜索

转载 作者:行者123 更新时间:2023-12-05 05:27:18 25 4
gpt4 key购买 nike

如果他们有 jabber 帐户,我想高效地检查所有本地地址簿联系人。用户使用手机号在XMPP服务器上注册。我目前将以下 XEP-0055 节发送到 ejabberd 服务器并评估结果。

<iq type="set" id="searchByUserName" to="vjud.ecoimac1.local" from="+1222333444@ecoimac1.local">
<query xmlns="jabber:iq:search">
<x xmlns="jabber:x:data" type="submit">
<field type="hidden" var="FORM_TYPE">
<value>jabber:iq:search</value>
</field>
<field var="user">
<value>+123456789</value>
</field>
</x>
</query>
</iq>

这可行但效率不高。对于每个号码,必须发送一个查询。 WhatsApp 等其他应用程序执行相同的工作。有没有更有效的方法?

最佳答案

我现在有以下有效的解决方案:

在服务器端,我确实为 eJabberd 设置了一个 MySQL 数据库后端,在 Web 服务器上,一个 PHP 接口(interface)为客户端应用程序提供了用户查找。该应用程序发送一个 HTTP POST 请求,其中包含一组要检查的 jabber 用户名。 PHP 脚本查找哪些用户已注册并返回包含已注册用户索引的响应。

<?php

// HTTP POST sent from client app
// Do authentication here...

// Read all parameters
$users = array();
$user = $_POST["username0"];
for ($i = 1; !empty($user); $i++)
{
// Add user
$users[] = $user;

// Next parameter
$user = $_POST["username".$i];
}
if (empty($users))
{
echo "Success"; // nothing to do
exit;
}

// Create mySQL connection
$db = mysqli_connect("localhost", "user", "password", "database");
if (!$db)
{
$descr = mysqli_connect_error();
echo "Error: ".$descr;
exit;
}

// Prepare query
// SELECT username FROM users WHERE username IN ('+41796548345','+41786547544',...)
$query = "SELECT username FROM users WHERE username IN(";
foreach ($users as $user)
{
$query .= "'".$user."',";
}
$query = rtrim($query, ",");
$query .= ")";

// Execute query and generate result
$result = "Success";
$recset = mysqli_query($db, $query); // [+41786547544,+41763428566,...]
while ($rec = mysqli_fetch_object($recset))
{
$index = find_user($rec->username, $users);
if ($index >= 0)
{
$result .= "\t".$index;
}
}

echo $result;

function find_user($username, $users)
{
for ($idx = 0; $idx < count($users); $idx++)
{
if ($users[$idx] == $username)
{
return $idx; // found at index
}
}
return -1; // not found
}

?>

关于xmpp - 高效的 XMPP 用户搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20243370/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com