Websocket在playframework 2中发送所有客户端的数据

我需要帮助来理解playframework中的WS

我的控制器中有下一个代码

public static WebSocket sockHandler() { return new WebSocket() { // Se llama para establecer el WS public void onReady(WebSocket.In in, WebSocket.Out out) { //por cada evento recivido por el socket // Se regitra una llamada para el procesamiento de los eventos in.onMessage(new Callback() { public void invoke(String event) { //Logger.info(event) System.out.println("este es el event "+event); } }); // write out a greeting out.write("Hola a todos"); } }; 

}

在我看来,我有:

  $(function() { var WS = window['MozWebSocket'] ? MozWebSocket : WebSocket var sock = new WS("@routes.Application.sockHandler().webSocketURL(request)") $('button.send').click(function() { console.log('entro al click'); sendMessage(); }); var sendMessage = function() { sock.send("llamando controller"); } var receiveEvent= function(event) { $('.greeting').append(event.data); alert('entro'); } sock.onmessage=receiveEvent; })  

当客户端发送操作时,我需要始终在所有客户端上打印警报(’entro’)。

请原谅我的英语,但我会讲西class牙语。

非常感谢你

在您的代码中,您正在编写对实际创建的Websocket的响应(即调用客户端和服务器之间的实际Websocket)。 您必须知道每个客户端都有自己的Websocket。

如果要为每个客户端编写内容,则必须在所有位置保留所有创建的Websockets。 在Play示例中 ,使用以下代码部分完成:

包含所有Websockets的Map (实际有输出):

 Map> members = new HashMap>(); 

然后寄存器在这里完成:

 members.put(join.username, join.channel); 

并向所有客户端发送消息,通过迭代所有已注册的Webscokets来完成 :

 for(WebSocket.Out 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); }