1

Play フレームワークでは、websocket メッセージを処理する Concurrent.broadcast の使用法を示す websocket-chat アプリケーションを見ることができます。

しかし、私は websockets を使用して、接続された各 websocket に個別にメッセージを送信したいと考えています。最も単純な例は、ユーザーが {user: "First", to: "Second", message: "Hi"} のようなメッセージを送信したときのプライベート メッセージのようなものです。

オブジェクト play.api.libs.iteratee.Concurrent を調べましたが、これを行うには Concurrent.unicast が最も適しているようです。しかし、Concurrent.broadcast がある場合、メッセージをプッシュできるチャネルがあります。Concurrent.unicast の場合は、Enumerator だけです。

では、Scala で Play Framework 2.2 を使用して websocket 間でプライベート メッセージをディスパッチするにはどうすればよいでしょうか?

4

2 に答える 2

0

チャット ルーム アプリケーションでの返信は、次の方法でルーム内のすべてのユーザーに送信されます。

// Json イベントをすべてのメンバーに送信 public void notifyAll(String kind, String user, String text) {

したがって、プライベート メッセージを実装する場合は、特定の 1 人のユーザーにのみメッセージを送信する「通知」メソッドを実装する必要があります。次のように言います。

// Send a Json event to all members
public void notify(String kind, String user, String userTo, 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");
        m.add(userTo);

        channel.write(event);
    }
于 2013-10-23T10:48:07.047 に答える