4

I'm creating with friend programming project. We splitted this in two parts, I'm responsible for client( simple window application ), he made server. I'm supposed to send JSON objects to his server with help of websocket ( he gave me info, what I should send http://pastebin.com/dmYBtN25). I know how to create json objects, but problem for me is how to use websocket lib combined with json( currently I'm using weberknecht and json-lib ). Below is an example I found that may be base for my client. I would be greatfull for tips and help or just simple example how to do that.

import java.net.URI;
import java.net.URISyntaxException;

import de.roderick.weberknecht.WebSocket;
import de.roderick.weberknecht.WebSocketConnection;
import de.roderick.weberknecht.WebSocketEventHandler;
import de.roderick.weberknecht.WebSocketException;
import de.roderick.weberknecht.WebSocketMessage;


public class App {
    public static void main(String[] args) {

    try {
        URI url = new URI("ws://127.0.0.1/test");
        WebSocket websocket = new WebSocketConnection(url);

        // Register Event Handlers

        websocket.setEventHandler(new WebSocketEventHandler() {
            public void onOpen() {
                System.out.println("--open");
            }

            public void onMessage(WebSocketMessage message) {
                System.out.println("--received message: "
                        + message.getText());
            }

            public void onClose() {
                System.out.println("--close");
            }
        });

        // Establish WebSocket Connection
        websocket.connect();

        // Send UTF-8 Text
        websocket.send("hello world");

        // Close WebSocket Connection
        websocket.close();
    } catch (WebSocketException wse) {
        wse.printStackTrace();
    } catch (URISyntaxException use) {
        use.printStackTrace();
    }
}

}

1
  • It may help to look at the code of github.com/tavendo/AutobahnAndroid, which implements WebSocket, and a RPC/PubSub on top with JSON and by using the Jackson JSON processor. Disclaimer: I am author of Autobahn and WAMP. Commented Oct 18, 2012 at 15:56

1 Answer 1

6

have you tried:

websocket.send("{\"firstName\": \"John\"}" /* stick your JSON here */);

If you know how to create JSON that should do it.

Exmaple of how you could create the JSON with google gson:

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;

/**
 * @author jadlr
 */
public class UserConnected {

private static final Gson GSON = new GsonBuilder().setPrettyPrinting().create();

private final int event;
private final String cookie;
private final From from;
private final Channel channel;

public UserConnected(int event, String cookie, From from, Channel channel) {
    this.from = from;
    this.cookie = cookie;
    this.event = event;
    this.channel = channel;
}

public int getEvent() {
    return event;
}

public String getCookie() {
    return cookie;
}

public From getFrom() {
    return from;
}

public String toJson() {
    return GSON.toJson(this, UserConnected.class);
}

public static class From {

    private final int id;
    private final String userId;

    public From(int id, String userId) {
        this.id = id;
        this.userId = userId;
    }

    public int getId() {
        return id;
    }

    public String getUserId() {
        return userId;
    }

}

public static class Channel {

    private final int id;
    private final String name;

    public Channel(int id, String name) {
        this.id = id;
        this.name = name;
    }

    public int getId() {
        return id;
    }

    public String getName() {
        return name;
    }

}

public static void main(String[] args) {

    UserConnected userConnected = new UserConnected(0, "cookie123", new From(1, "user"), new Channel(1, "channel"));
    System.out.println(userConnected.toJson());

}

}
Sign up to request clarification or add additional context in comments.

3 Comments

websocket.send("{\"firstName\": \"John\"}" /* stick your JSON here */); This method only takes String as argument, my main Problem is that I don't know how to send this object.
The String is sent with that method, the toJson() method in my json sample return a String.
I get it, thanks, it helped a lot. I'll tinker with the code.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.