我需要为公司网站提供实时聊天的功能。我的主要需求是,办公室里有5名代理人负责回答客户的问题。当许多客户同时提出问题时,例如客户A提出一个问题,那我需要检查哪个代理人是空闲的,并将1个空闲的代理人分配给该客户(A)。类似地,其他所有客户都应分配专门的代理人,一旦所有代理人都忙碌,则后续客户请求应排队等待。完成客户查询后,代理人应该可以处理排队的客户。
我了解到Atmosphere Framework可以轻松提供这种功能,并且已经开始使用Atmosphere(atmosphere-jquery-pubsub-1.0.18.war)。我能够运行程序,但它只能作为群聊,也就是说,如果输入“Hi”,则会广播给所有连接的浏览器,而我需要的是代理人和客户之间的一对一专属通信。
我尝试实现相同的功能,使用了一个HashTable。我会根据过滤后的IP添加AtmosphereResource,然后尝试将客户端分配给HashTable中的管理员。
虽然我已经实现了这个目标,但代码变得非常复杂,我认为还有更简单的方法可以做到。
我了解到Atmosphere Framework可以轻松提供这种功能,并且已经开始使用Atmosphere(atmosphere-jquery-pubsub-1.0.18.war)。我能够运行程序,但它只能作为群聊,也就是说,如果输入“Hi”,则会广播给所有连接的浏览器,而我需要的是代理人和客户之间的一对一专属通信。
@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);
}
}
我尝试实现相同的功能,使用了一个HashTable。我会根据过滤后的IP添加AtmosphereResource,然后尝试将客户端分配给HashTable中的管理员。
虽然我已经实现了这个目标,但代码变得非常复杂,我认为还有更简单的方法可以做到。