2012-08-30 78 views
0

我需要幫助瞭解WS在playframework的WebSocket發送數據的所有客戶在playframework 2

我有下面的代碼在我的控制器

public static WebSocket<String> sockHandler() { 
return new WebSocket<String>() { 
    // Se llama para establecer el WS 

    public void onReady(WebSocket.In<String> in, WebSocket.Out<String> out) { 

     //por cada evento recivido por el socket 
     // Se regitra una llamada para el procesamiento de los eventos 
     in.onMessage(new Callback<String>() { 
      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"); 
    } 
}; 

}

在我看來

,我有:

<script type="text/javascript" charset="utf-8"> 

    $(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; 
    }) 

</script> 

我需要在客戶端發送ac時始終在所有客戶端上打印alert('entro')灰。

打擾我的英語,但我會說西班牙語。

非常感謝你

+0

你究竟想要達到什麼目標?當用戶發送內容時,每個連接的用戶都應該打印警報('entro')? –

+0

確切地說,這就是我想要實現的 – rudighert

+0

你看過樣品嗎?看到這篇文章:http://stackoverflow.com/a/12203677/320180 –

回答

3

在代碼中,你正在寫的實際創建的WebSocket的響應(即調用客戶端和服務器之間的實際的WebSocket)。你必須知道每個客戶都有自己的WebSocket。

如果你想寫一些東西給每個客戶端,你必須堅持所有創建的Websockets的地方。

A Map containing all Websockets(有實際輸出)::

Map<String, WebSocket.Out<JsonNode>> members = new HashMap<String, WebSocket.Out<JsonNode>>(); 

則寄存器完成here:在Play sample,它與這些代碼部分完成

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

和消息被髮送對所有的客戶,它由iterating through all registered Webscokets完成:

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); 
} 
+0

以上Github鏈接都不起作用! – Sivakumar

+1

@Sivakumar鏈接已更新! –

相關問題