gpt4 book ai didi

java - 一对一聊天 Atmosphere 框架

转载 作者:行者123 更新时间:2023-12-01 01:47:19 25 4
gpt4 key购买 nike

我对我公司网站的实时聊天有一些要求。我的主要要求是,我的办公室有 5 名代理负责回答客户的询问。当许多客户可以提出问题时,假设客户 A 提出问题,在这种情况下,我必须检查哪个代理是免费的,并为该(A)客户指定 1 个免费代理。同样,对于所有其他客户,应分配专门的代理,一旦所有代理都忙,则应将进一步的客户请求排队。

完成客户查询后,代理应可以自由处理排队的客户。

我了解到 Atmosphere Framework 可以轻松提供此类功能,并让我掌握了 Atmosphere (atmosphere-jquery-pubsub-1.0.18.war)。

我能够运行一个程序,但它充当群聊,即如果写为“嗨”,那么它会广播到所有连接的浏览器,而不是我需要作为代理-客户案例,即一对一的专用通信。

@Path("/pubsub/{topic}")
public class JQueryPubSub
{

@PathParam("topic")
private Broadcaster topic;

@GET
public SuspendResponse<String> subscribe()
{
return new SuspendResponse.SuspendResponseBuilder().broadcaster(this.topic).outputComments(true).addListener(new EventsLogger()).build();
}

@POST
@Broadcast
@Produces({"text/html;charset=ISO-8859-1"})
public Broadcastable publish(@FormParam("message") String message)
{
return new Broadcastable(message, "", this.topic);
}
}

我试图实现相同的功能是,我使用了 1 个 HashTable,在其中添加了基于过滤 IP 的 AtmosphereResource,然后尝试将客户分配给 HashTable 中存在的管理员。

我能够实现它变得非常复杂的代码,我认为会有简单的方法来做到这一点。

最佳答案

我认为您正在将所有“客户-代理”对订阅到一个主题

尝试在主题名称中编码客户 ID 和代理 ID。

或者,您可以为定向到用户和代理的消息设置单独的端点。然后代理订阅(并发布)主题“/pubsub/customer/{customerId}”,客户订阅(并发布)主题“/pubsub/agent/{agentId}”。

或者只使用单个实体“/pubsub/user/{userId}”(如果客户 ID 和代理 ID 可能重叠,则在 userId 中编码实体类型,例如 agent123/customer123)。

在这两种情况下,您都必须设置广播公司的处置:Preventing Out of Memory ,因为它们是动态创建的。

关于java - 一对一聊天 Atmosphere 框架,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20028347/

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