sacOO7 / socketcluster-client-java

Native java and android client for socketcluster framework in node.js
http://socketcluster.io/
Apache License 2.0
94 stars 42 forks source link

cannot authenticate wesocket connection from java client #23

Open tyagi85prashant opened 6 years ago

tyagi85prashant commented 6 years ago

Hi i am trying to get websocket stream using following code

`import com.neovisionaries.ws.client.WebSocketException; import com.neovisionaries.ws.client.WebSocketFrame; import io.github.sac.*;

import java.util.List; import java.util.Map;

import org.codehaus.jettison.json.JSONException; import org.codehaus.jettison.json.JSONObject;

public class Main {

public static String url= "wss://sc-02.coinigy.com/socketcluster/";

public static void main(String arg[]) throws JSONException {

    Socket socket = new Socket(url);
    JSONObject obj = new JSONObject();
    obj.put("apiKey", "eee");
    obj.put("apiSecret", "xxx");
    socket.setListener(new BasicListener() {

        public void onConnected(Socket socket,Map<String, List<String>> headers) {
            System.out.println("Connected to endpoint");    
            socket.emit("auth", obj.toString(), new Ack() {
                @Override
                public void call(String eventName, Object error, Object data) {
                    System.out.println("Got message for :"+eventName+" error is :"+error+" data is :"+data);
                }
            });

        }

        public void onDisconnected(Socket socket,WebSocketFrame serverCloseFrame, WebSocketFrame clientCloseFrame, boolean closedByServer) {
            System.out.println("Disconnected from end-point");
        }

        public void onConnectError(Socket socket,WebSocketException exception) {
            System.out.println("Got connect error "+ exception);
        }

        public void onSetAuthToken(String token, Socket socket) {
            System.out.println("Set auth token got called");
            socket.setAuthToken(token);
        }

        public void onAuthentication(Socket socket,Boolean status) {

            if (status) {
                System.out.println("socket is authenticated");
            } else {
                System.out.println("Authentication is required (optional)");
            }
        }

    });

   socket.setReconnection(new ReconnectStrategy().setDelay(3000).setMaxAttempts(10)); //Connect after each 2 seconds for 30 times

    socket.connect();

    Socket.Channel channel = socket.createChannel("RADE-OK--BTC--CNY");
    channel.subscribe(new Ack() {
        @Override
        public void call(String channelName, Object error, Object data) {
            if (error==null){
                System.out.println("Subscribed to channel "+channelName+" successfully");
            }
        }
    });

    channel.onMessage(new Emitter.Listener() {
        @Override
        public void call(String channelName, Object data) {

            System.out.println("Got message for channel "+channelName+" data is "+data);
        }
    });

    channel.unsubscribe(new Ack() {
        @Override
        public void call(String name, Object error, Object data) {
            System.out.println("Unsubscribed successfully");
        }
    });
    channel.unsubscribe();
}

}`

I am emitting the auth msg but still i ma getting the following error:

NFO: Message :{"rid":2,"error":"Your are connected but this socket has not been authenticated. Please emit auth event with credentials payload."} Dec 26, 2017 3:27:28 AM io.github.sac.Socket$1 onFrame INFO: Message :{"data":{"pingTimeout":20000,"id":"vXgm9NvKjCcvB6mVACFj","isAuthenticated":false},"rid":1}

Can you please help

kyle-copeland commented 6 years ago

I believe you need to set socket.setAuthToken before you run socket.connect(). Auth should happen automatically. You don't need to manually emit an auth event. Let me know if that works for you.

sacOO7 commented 6 years ago

Yeah @kyle-copeland Thanks for the reply 👍

dalakada commented 6 years ago

can you please provide an sample working code, I'm also having the same issue

aviolide commented 6 years ago

please example of working code!

sacOO7 commented 6 years ago

@dalakada @desided @tyagi85prashant Please look here for solution https://github.com/sacOO7/socketcluster-client-java/issues/17

sacOO7 commented 6 years ago

Hi @desided @dalakada @tyagi85prashant @kyle-copeland This should work for you https://gist.github.com/sacOO7/a3fc817dfc5c85cf21ec96f09869fdfc

sacOO7 commented 6 years ago

@desided @dalakada @tyagi85prashant @kyle-copeland , please let me know your updates on this. Will close the issue, once it gets resolved