Code Monkey home page Code Monkey logo

Comments (31)

FaizVisram avatar FaizVisram commented on August 11, 2024

The tutorial in the README works perfectly fine in Android.

from socket.io-client-java.

ynkm169 avatar ynkm169 commented on August 11, 2024

This is my node.js server. the socket works on web but not android using the example android code in README.

I see a line outputted from Eclipse, but the android code never hits socket.emit("foo", "hi"). It also doesn't throw an exception:
I/IO(6424): new io instance for http://myexamplesite:80/

var express = require('express');
var app = express();
var server = require('http').createServer(app);
var io = require('socket.io')(server);
var port = 80;

io.on('connection', function (socket) {
console.log("new connection");
...

This is my Android code:

void runSocket() {
    try {
        final com.github.nkzawa.socketio.client.Socket socket = IO.socket("http://myexamplesite:80");

        socket.on(com.github.nkzawa.socketio.client.Socket.EVENT_CONNECT, new Emitter.Listener() {

            @Override
            public void call(Object... args) {
                socket.emit("foo", "hi");
                socket.disconnect();
            }

        }).on("event", new Emitter.Listener() {

            @Override
            public void call(Object... args) {
            }

        }).on(com.github.nkzawa.socketio.client.Socket.EVENT_DISCONNECT, new Emitter.Listener() {

            @Override
            public void call(Object... args) {
            }

        });
        socket.connect();
    } catch (URISyntaxException e) {
        e.printStackTrace();
    }


}

from socket.io-client-java.

dwhu avatar dwhu commented on August 11, 2024

Post all of your Node.js Code. Because it looks right now you are not telling your http server to listen at a port.

Simply adding server.listen(port); might solve your problems.

from socket.io-client-java.

ynkm169 avatar ynkm169 commented on August 11, 2024

Thanks so much for helping, I run server on aws, 3000 or most ports are blocked. It was impossible to know this cuz calling URL would just time out and no return message or indications, until I tried to use some other technology and didn't work as well and found the answer somewhere.

from socket.io-client-java.

ynkm169 avatar ynkm169 commented on August 11, 2024

So u had to actually unblock 3000 or whichever port u are using

from socket.io-client-java.

dannyroa avatar dannyroa commented on August 11, 2024

Hi,

I'm having a similar issue on Android. I have the same code as above.

I call socket.connect() but none of the Listeners is called.

How can I set a server to listen to a specific port?

Thanks.

from socket.io-client-java.

ynkm169 avatar ynkm169 commented on August 11, 2024

Call listen(80)

from socket.io-client-java.

dannyroa avatar dannyroa commented on August 11, 2024

@ynkm169: I looked at socket and it has no listen method. Under what class can I find it?

from socket.io-client-java.

ynkm169 avatar ynkm169 commented on August 11, 2024

It is a server method not a socket method

from socket.io-client-java.

ynkm169 avatar ynkm169 commented on August 11, 2024

Socket.io server class

from socket.io-client-java.

dannyroa avatar dannyroa commented on August 11, 2024

@ynkm169: Thanks for the prompt reply.

Not sure what I'm missing but I can't find the Server class you're talking about.

from socket.io-client-java.

ynkm169 avatar ynkm169 commented on August 11, 2024

http://socket.io/docs/server-api/

from socket.io-client-java.

dannyroa avatar dannyroa commented on August 11, 2024

I'm actually building an Android client and I can't find the Server class anywhere in the Java library.

from socket.io-client-java.

loolooii avatar loolooii commented on August 11, 2024

I have the same exact problem. The listeners are not called. I even set the port in options:

IO.Options opts = new IO.Options();
opts.port = 3000;
socket = IO.socket("http://localhost", opts);

Because my server runs on port 3000. But socket does not connect at all.

from socket.io-client-java.

nkzawa avatar nkzawa commented on August 11, 2024

@loolooii

You can't use both url string and opts.port at the same time.
Just set url like IO.socket("http://localhost:3000");

from socket.io-client-java.

loolooii avatar loolooii commented on August 11, 2024

@nkzawa that was what I tried at first with no luck :) I will post the code later to show you guys, maybe I'm doing something wrong.

from socket.io-client-java.

loolooii avatar loolooii commented on August 11, 2024

Hi. This is my Android code:

private Socket socket;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        try {
            socket = IO.socket("http://localhost:3000");
        } catch (URISyntaxException e) {
            e.printStackTrace();
        }
        socket.on(Socket.EVENT_CONNECT, new Emitter.Listener() {

            @Override
            public void call(Object... args) {
                Log.d("MainActivity: ", "socket connected");
                socket.emit("message", "hi");
                socket.disconnect();


            }

        }).on("message", new Emitter.Listener() {

            @Override
            public void call(Object... args) {

                JSONObject obj = (JSONObject) args[0];
                Log.d("MainActivity: ", "message back: "+obj.toString());
            }

        }).on(Socket.EVENT_DISCONNECT, new Emitter.Listener() {

            @Override
            public void call(Object... args) {}

        });
        socket.connect();


        setContentView(R.layout.activity_chat);
}

And this is my server code:

var express = require('express');
var app = express();
var server = require('http').createServer(app);
var io = require('../..')(server);
var port = process.env.PORT || 3000;

server.listen(port, function () {
  console.log('Server listening at port %d', port);
});

app.use(express.static(__dirname + '/public'));


io.on('connection', function (socket) {

  socket.on('message', function (data) {
    console.log(data);
    socket.broadcast.emit('message', {
      username: socket.username,
      message: data
    });
  });

});

Am I doing something wrong? @nkzawa

from socket.io-client-java.

loolooii avatar loolooii commented on August 11, 2024

@dannyroa I fixed it by changing "http://localhost:3000" to "http://192.168.1.10:3000".

from socket.io-client-java.

nkzawa avatar nkzawa commented on August 11, 2024

@loolooii ah, yes, you have to use an IP or an actual server url. Are all your problems solved?

from socket.io-client-java.

loolooii avatar loolooii commented on August 11, 2024

@nkzawa Yeah, thanks! Another question: is it possible to send images? I know that latest version of socket.io supports that, but also with this library?

from socket.io-client-java.

nkzawa avatar nkzawa commented on August 11, 2024

@loolooii yes, you can send byte array in the same manner as the JS client like the following:

socket.emit("event1", new byte[100]);

JSONObject obj = new JSONObject();
obj.put("binary", new byte[100]);
socket.emit("event2", obj);

from socket.io-client-java.

StuckInLoop avatar StuckInLoop commented on August 11, 2024

can anyone please post a simple example snippets for receiving messages from an emit or broadcast?

thanks in advanced.

from socket.io-client-java.

loolooii avatar loolooii commented on August 11, 2024
try {
            socket = IO.socket("http://192.168.1.10:3000");
        } catch (URISyntaxException e) {
            e.printStackTrace();
        }

        socket.on(Socket.EVENT_CONNECT, new Emitter.Listener() {

            @Override
            public void call(Object... args) {
                Log.d("ActivityName: ", "socket connected");

                // emit anything you want here to the server
                socket.emit("login", some);
                //socket.disconnect();
            }

       // this is the emit from the server
        }).on("someFunction", new Emitter.Listener() {

            @Override
            public void call(Object... args) {
                // this argas[0] can have any type you send from the server
                JSONArray obj = (JSONArray) args[0];

                // runOnUiThread is needed if you want to change something in the UI thread
                runOnUiThread(new Runnable() {
                    public void run() {
                        // do something
                    }
                });
            }
        }).on(Socket.EVENT_DISCONNECT, new Emitter.Listener() {

            @Override
            public void call(Object... args) {
                Log.d("ActivityName: ", "socket disconnected");
            }

        });
        socket.connect();

This is basically everything you need @jc70417

from socket.io-client-java.

yedhukrishnan avatar yedhukrishnan commented on August 11, 2024

This is the working Socket IO client code which we have running in our browser.

$('#subscribe').on('click', function(){
    socket.get('/user', function(response){
        console.log(response);
    });
});

This is the equivalent Java client code (Android) we wrote.

final Socket socket = IO.socket("http://192.168.0.65:1337/user");
socket.on(Socket.EVENT_CONNECT_ERROR, new Emitter.Listener() {

    @Override
    public void call(Object... args) {
        Log.d(LOG_TAG,"Connection error");
        ((Exception)args[0]).printStackTrace();
    }

});
socket.on(Socket.EVENT_CONNECT, new Emitter.Listener() {
    @Override
    public void call(Object... args) {
        Log.d(LOG_TAG, "Connected!!!!!");
    }
});
socket.connect();

But when we run the android app, we are getting EVENT_CONNECT_ERROR, with the following stack trace:

Connection error
W/System.err﹕ com.github.nkzawa.engineio.client.EngineIOException: server error
W/System.err﹕ at com.github.nkzawa.engineio.client.Socket.onPacket(Socket.java:479)
W/System.err﹕ at com.github.nkzawa.engineio.client.Socket.access$800(Socket.java:29)
W/System.err﹕ at com.github.nkzawa.engineio.client.Socket$5.call(Socket.java:285)
W/System.err﹕ at com.github.nkzawa.emitter.Emitter.emit(Emitter.java:117)
W/System.err﹕ at com.github.nkzawa.engineio.client.Transport.onPacket(Transport.java:121)
W/System.err﹕ at com.github.nkzawa.engineio.client.transports.Polling.access$700(Polling.java:15)
W/System.err﹕ at com.github.nkzawa.engineio.client.transports.Polling$2.call(Polling.java:122)
W/System.err﹕ at com.github.nkzawa.engineio.parser.Parser.decodePayload(Parser.java:198)
W/System.err﹕ at com.github.nkzawa.engineio.client.transports.Polling._onData(Polling.java:130)
W/System.err﹕ at com.github.nkzawa.engineio.client.transports.Polling.onData(Polling.java:99)
W/System.err﹕ at com.github.nkzawa.engineio.client.transports.PollingXHR$5$1.run(PollingXHR.java:111)
W/System.err﹕ at com.github.nkzawa.thread.EventThread$2.run(EventThread.java:75)
W/System.err﹕ at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
W/System.err﹕ at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
W/System.err﹕ at java.lang.Thread.run(Thread.java:841)

Needless to say, our server is running and the Javascript code is giving us expected results. Can you please help us to solve this issue?

from socket.io-client-java.

nkzawa avatar nkzawa commented on August 11, 2024

@yedhukrishnan

socket.get('/user', function(response){

What exactly does this part mean? I think there is no api like this in socket.io.

from socket.io-client-java.

donjerick avatar donjerick commented on August 11, 2024

Hi,

I know this issue has been closed but I also get the same error as above. Here's what is in logcat:

D/HomeActivity﹕ object: com.github.nkzawa.engineio.client.EngineIOException: server error
W/System.err﹕ com.github.nkzawa.engineio.client.EngineIOException: server error
W/System.err﹕ at com.github.nkzawa.engineio.client.Socket.onPacket(Socket.java:478)
W/System.err﹕ at com.github.nkzawa.engineio.client.Socket.access$800(Socket.java:29)
W/System.err﹕ at com.github.nkzawa.engineio.client.Socket$5.call(Socket.java:285)
W/System.err﹕ at com.github.nkzawa.emitter.Emitter.emit(Emitter.java:117)
W/System.err﹕ at com.github.nkzawa.engineio.client.Transport.onPacket(Transport.java:121)
W/System.err﹕ at com.github.nkzawa.engineio.client.transports.Polling.access$700(Polling.java:15)
W/System.err﹕ at com.github.nkzawa.engineio.client.transports.Polling$2.call(Polling.java:122)
W/System.err﹕ at com.github.nkzawa.engineio.parser.Parser.decodePayload(Parser.java:198)
W/System.err﹕ at com.github.nkzawa.engineio.client.transports.Polling._onData(Polling.java:130)
W/System.err﹕ at com.github.nkzawa.engineio.client.transports.Polling.onData(Polling.java:99)
W/System.err﹕ at com.github.nkzawa.engineio.client.transports.PollingXHR$5$1.run(PollingXHR.java:111)
W/System.err﹕ at com.github.nkzawa.thread.EventThread$2.run(EventThread.java:75)
W/System.err﹕ at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
W/System.err﹕ at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
W/System.err﹕ at java.lang.Thread.run(Thread.java:841)

The error is thrown as EVENT_CONNECT_ERROR

Here's my socket initialization:

socket = IO.socket(SERVER + "/?token=" + token);

from socket.io-client-java.

squirrelsRduck avatar squirrelsRduck commented on August 11, 2024

when calling the connect() method, i get this:

12-09 12:51:53.210: I/dalvikvm(18408): Could not find method org.java_websocket.client.WebSocketClient., referenced from method com.github.nkzawa.engineio.client.transports.WebSocket$1.

I attached the JAR file from java_websocket, so not sure whats up with this. anybody have this?

from socket.io-client-java.

dannyroa avatar dannyroa commented on August 11, 2024

In case anybody is interested, OkHttp now supports Web Sockets.

square/okhttp#193

from socket.io-client-java.

b95505017 avatar b95505017 commented on August 11, 2024

I try to replace java-websocket with OkHttp's websocket. It seems works well on my socket.io project.
socketio/engine.io-client-java#14
It seems that some tests have error, please give me some advices.
Thanks.

from socket.io-client-java.

shyamjptpm avatar shyamjptpm commented on August 11, 2024

i want to connect socket by query options.i have multiple field.but connection got error and the message is "SERVER ERROR" below is my code.
IO.Options opts = new IO.Options();
opts.forceNew = isNew;
opts.reconnection = isRecon;
String query = "";
try {
String role = data.getString(Constants.USER_ROLE);
if (role != null && !role.equals(""))
query += "&" + Constants.USER_ROLE + "=" + role;
if (!data.isNull(Constants.REGION_ID)) {
String regid = data.getString(Constants.REGION_ID);
if (regid != null && !regid.equals(""))
query += "&" + Constants.REGION_ID + "=" + regid;
}
if (!data.isNull(Constants.LOGED_PASSWORD)) {
String pass = data.getString(Constants.LOGED_PASSWORD);
if (pass != null && !pass.equals(""))
query += "&" + Constants.LOGED_PASSWORD + "=" + pass;
}
if (!data.isNull(Socketio.NEW_USERS_NAME)) {
String nameValue = data.getString(Socketio.NEW_USERS_NAME);
if (!nameValue.isEmpty())
query += "&" + Socketio.NEW_USERS_NAME + "=" + nameValue;
}
if (!data.isNull(Constants.DEVICE_TOCKEN_KEY)) {
String deviceToken = data.getString(Constants.DEVICE_TOCKEN_KEY);
if (!deviceToken.isEmpty())
query += "&" + Constants.DEVICE_TOCKEN_KEY + "=" + deviceToken;
}
if (!data.isNull(Socketio.USER_ID)) {
String userID = data.getString(Socketio.USER_ID);
if (!userID.isEmpty())
query += "&" + Socketio.USER_ID + "=" + userID;
}
if (!data.isNull(Constants.LOCATION)) {
String userLocation = data.getString(Constants.LOCATION);
if (!userLocation.isEmpty())
query += "&" + Constants.LOCATION + "=" + userLocation;
}
query += "&" + Constants.VERSION + "=" + Constants.VERSION_NAME;
query += "&" + Constants.PROVIDER + "=" + Constants.PROVIDER_VALUE;
opts.query = query;
} catch (Exception e) {
e.printStackTrace();
}
socket = IO.socket(Constants.SERVER_URL, options);
socket.on(Socketio.USER_ID, new Emitter.Listener() {@
Override
public void call(Object...args) {
Object obj = args[0];
}
}).on(Socket.EVENT_CONNECT, new Emitter.Listener() {

@
Override
public void call(Object...args) {
    Object obj = args[0];
    socket.disconnect();
}

}).on(Socket.EVENT_DISCONNECT, new Emitter.Listener() {

@
Override
public void call(Object...args) {
    Object obj = args[0];
}

}).on(Socket.EVENT_CONNECT_ERROR, new Emitter.Listener() {

@
Override
public void call(Object...args) {
    Object obj = args[0];
}

}).on(Socket.EVENT_CONNECT_TIMEOUT, new Emitter.Listener() {

@
Override
public void call(Object...args) {
    Object obj = args[0];
}

});
if (!isConnected()) {

isConnecting = true;
isDisconnect = false;
//socket.connect(iocallback);

socket.connect();

}

Anybody please help me in query options case

from socket.io-client-java.

shanaulhaque avatar shanaulhaque commented on August 11, 2024

Where i can find jar for socket.io?

from socket.io-client-java.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.