我必须实现聊天模块以启用隐私聊天黑白用户。我必须使用Scala,Akka和java.net在Play框架中执行此操作。*
我在网上有几个例子,它们展示了WebSockets的使用,但我没有任何可以帮助我使用WebSockets实现Chat模块的例子。我知道我必须做什么,但我完全感到困惑的是对象的结构,类和我应该如何开始。
如果有人可以帮我这个或者请给我一篇好的文章,那么这篇论文可以帮助我完成整个过程。三江源。
答案 0 :(得分:3)
我是用Java做的。这是我从例子中修改的内容:
public class ChatRoom extends UntypedActor {
//Added hashmap to keep references to actors (rooms).
// (might be put in another class)
public static HashMap<String,ActorRef> openedChats=new HashMap<String,ActorRef>();
//Added unique identifier to know which room join
final String chatId;
public ChatRoom(String chatId) {
this.chatId = chatId;
}
public static void join(final User user, final String chatId , WebSocket.In<JsonNode> in, WebSocket.Out<JsonNode> out) throws Exception{
final ActorRef chatRoom;
//Find the good room to bind to in the hashmap
if(openedChats.containsKey(chatId)){
chatRoom = openedChats.get(chatId);
//Or create it and add it to the hashmap
}else{
chatRoom = Akka.system().actorOf(new Props().withCreator(new UntypedActorFactory() {
public UntypedActor create() {
return new ChatRoom(chatId);
}
})
);
openedChats.put(chatId,chatRoom);
}
// Send the Join message to the room
String result = (String)Await.result(ask(chatRoom,new Join(user.getId()+"", out), 10000), Duration.create(10, SECONDS));
// ..... Nothing to do in the rest
这只是主要的修改,你还必须调整javascript和路由文件
随意提问。
答案 1 :(得分:2)