2012-04-17 51 views
3

我想弄清楚一个方法来获取WebSocket.Out在WebSocket.In的onMessage被调用时发出一些数据。在播放2.0发送输出到websocket

例如:

public class Application extends Controller { 

public static Result index() { 
    return ok(index.render("Your new application is ready.")); 
} 

public static WebSocket<String> sockHandler() { 
    return new WebSocket<String>() { 
     public void onReady(WebSocket.In<String> in, WebSocket.Out<String> out) { 
      in.onMessage(new F.Callback<String>() { 
       // FIRE SOME DATA BACK OUT TO BROWSER HERE!!! 
       public void invoke(String event) { 
        Logger.info(event); 
       } 
      }); 

      out.write("I'm contacting you regarding your recent websocket."); 
     } 
    }; 
} 

private static void send(WebSocket.Out<String> out, String data){ 
    out.write(data); 
} 

}

任何帮助十分赞赏。

回答

2

请检查websocket-chat sample application的编码。它会给你一个模型来复制websocket管理。

例如,这样的代码:

// Send a Json event to all members 
    public void notifyAll(String kind, String user, String text) { 
     for(WebSocket.Out<JsonNode> channel: members.values()) { 

      ObjectNode event = Json.newObject(); 
      event.put("kind", kind); 
      event.put("user", user); 
      event.put("message", text); 

      ArrayNode m = event.putArray("members"); 
      for(String u: members.keySet()) { 
       m.add(u); 
      } 

      channel.write(event); 
     } 
    } 

一些数据写入channel,这是一个WebSocket.Out<JsonNode>