2

我正在使用JSJaCejabberd构建实时聊天。除了为所有网站访问者提供帐户“访客”之外,一切正常。如果两个访问者尝试同时进行实时聊天,则响应会变得混乱或第一个用户已注销。

我可以随机设置客人姓名,但我需要检查该姓名是否已注册或自动注册,并希望它之前没有注册过。我尝试将每个登录名分配给一个随机资源名称,但这仍然合并了对话。

简而言之,我正在寻找最简单的方法来允许多个匿名登录开始与 livechat 帐户的个人对话。如果实时聊天可以在主要实时聊天帐户处于聊天状态时轮询到不同的用户,那就更好了(但可选)。

该解决方案可以是基于 Web 客户端或服务器的,我不在乎,因为我控制了两者(并且 ejabberd 支持各种模块)。

顺便说一句,当我尝试自动注册注册帐户时,JSJaC simpleclient 演示返回:

An error occured:
Code: 409
Type: cancel
Condition: conflict

我还没有确定这是否可以忽略或使用自定义客户端或服务器设置覆盖。我想我可以检测到这个错误并在没有自动注册的情况下重试,但我想听听更好/更简单的选择。

4

4 回答 4

2

尝试在您的 ejabberd 服务器上启用匿名登录模式?然后您不必注册客户帐户,只需选择任何随机的用户名和密码,ejabberd 就会接受它们......

于 2009-06-19T05:07:11.070 回答
2

我想你可以在 ejabberd 中使用外部身份验证我处于同样的情况:我希望匿名用户能够登录服务器,但一些特殊用户也能够登录以执行管理任务......所以我决定写一个 php 脚本作为 ejabberd 的身份验证处理程序。然后它将接受名称以 anon_* 开头的所有登录名,并针对数据库对其他用户进行身份验证。

于 2012-11-11T17:00:54.577 回答
1

我们在一个项目中遇到了类似的问题——我们希望用户能够登录而无需任何帐户创建或冲突——自动注册对我们不起作用,因为名称可能会发生冲突。最后,我们在 ejabberd 中选择了带有 SASL 身份验证的匿名登录 - 它允许匿名登录和动态帐户创建,我相信这些帐户不会留在系统上(它们仅在连接打开时才有效),但是据我所知服务器将为用户生成一个随机 ID。

GUID JID 问题可能可以通过使用昵称来解决

设置 SASL

Ejabberd 支持页面 - SASL

于 2009-06-24T09:25:57.320 回答
0

如果您无法让 ejabberd 的匿名模式正常工作,您可以尝试为每个用户的基本名称创建一个GUID,并即时注册用户。您将需要一个定期脚本来从数据库中删除旧的未使用帐户。

于 2009-06-22T02:55:31.783 回答