All Downloads are FREE. Search and download functionalities are using the official Maven repository.

snippets.controllers.websockets.WebSocketController Maven / Gradle / Ivy

The newest version!
/*
 * #%L
 * Wisdom-Framework
 * %%
 * Copyright (C) 2013 - 2014 Wisdom Framework
 * %%
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * 
 *      http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 * #L%
 */
package snippets.controllers.websockets;

import org.apache.felix.ipojo.annotations.Requires;
import org.wisdom.api.DefaultController;
import org.wisdom.api.annotations.*;
import org.wisdom.api.annotations.scheduler.Every;
import org.wisdom.api.content.Json;
import org.wisdom.api.http.websockets.Publisher;
import org.wisdom.api.scheduler.Scheduled;

import java.util.Random;

@Controller
public class WebSocketController extends DefaultController implements Scheduled {

    // tag::reception[]
    @OnMessage("/socket")
    public void onMessage(@Body String message) {
        logger().info("Message received : {}", message);
    }
    // end::reception[]

    // tag::receptionWithJson[]
    @OnMessage("/jsonSocket")
    public void onJsonMessage(@Body Data data) {
        logger().info("Data received : name: {}, age: {}", data.name, data.age);
    }
    // end::receptionWithJson[]

    // tag::parameter[]
    @OnMessage("/socket/{name}")
    public void messageOnSeveralSockets(@Parameter("name") String name, @Body String message) {
        logger().info("Message received on {} : {}", name, message);
    }
    // end::parameter[]

    // tag::client[]
    @OnMessage("/socket")
    public void identifyClient(@Parameter("client") String client, @Body String message) {
        logger().info("Message received from {} : {}", client, message);
    }
    // end::client[]


    // tag::send[]
    @Requires
    Publisher publisher;

    @OnMessage("/echo")
    public void echo(@Parameter("client") String client, @Body String message) {
        logger().info("Message received : {}", message);
        publisher.send("/echo", client, message.toUpperCase());
    }
    // end::send[]

    // tag::publish[]
    @OnMessage("/echo-all")
    public void echoAll(@Body String message) {
        logger().info("Message received : {}", message);
        publisher.publish("/echo-all", message.toUpperCase());
    }
    // end::publish[]

    Random random = new Random();

    // tag::binary[]
    @Every("1h")
    public void binary() {
        byte[] bytes = new byte[5];
        random.nextBytes(bytes);
        logger().info("Message dispatching binary : {}", bytes);
        publisher.publish("/binary", bytes);
    }
    // end::binary[]


    // tag::json[]
    @Requires
    Json json;

    @Every("1h")
    public void sendJson() {
        publisher.publish("/ws/json", json.newObject().put("name", "hello").put("date", System.currentTimeMillis()));
    }
    // end::json[]

    // tag::notification[]
    @Opened("/ws/json")
    public void opened(@Parameter("client") String client) {
        logger().info("Client connection on web socket {}", client);
    }

    @Closed("/ws/json")
    public void closed(@Parameter("client") String client) {
        logger().info("Client disconnection on web socket {}", client);
    }
    // end::notification[]


}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy