我正在使用 JSJaC ejabberd 。除了所有网站访问者都获得帐户“访客”外,所有工作都有效。如果两个访问者同时尝试实时聊天,则响应变得混乱或第一个用户被注销。

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

简而言之,我正在寻找允许多个匿名登录与livechat帐户开始个人对话的最简单方法。甚至更好(但可选)如果当主要实时聊天帐户在聊天时,实时聊天可以循环到不同的用户。

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

顺便说一下,当我尝试自动注册一个注册账号时,JSJaC simpleclient demo会返回:

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

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

有帮助吗?

解决方案

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

其他提示

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

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

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

设置SASL

Ejabberd支持页面--SASL

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top