简体   繁体   English

Android developpement,Gottox socket.io-java-client:file not fount Exception /socket.io/1/

[英]Android developpement, Gottox socket.io-java-client: file not fount Exception /socket.io/1/

here is my problem: 这是我的问题:

i've been trying to use socket.io-java-client for an android app but i'm ending up with an handshake error (see below). 我一直在尝试使用socket.io-java-client作为Android应用程序,但我最终遇到握手错误(见下文)。

here is my app source code: 这是我的应用程序源代码:

public void runIO(){
    try {
        SocketIO socket = new SocketIO("http://192.168.1.60:1337");
        socket.connect(new IOCallback() {
            @Override
            public void onMessage(JSONObject json, IOAcknowledge ack) {
                try {
                    System.out.println("Server said:" + json.toString(2));
                } catch (JSONException e) {
                    e.printStackTrace();
                }
            }

            @Override
            public void onMessage(String data, IOAcknowledge ack) {
                System.out.println("Server said: " + data);
            }

            @Override
            public void onError(SocketIOException socketIOException) {
                System.out.println("an Error occured");
                socketIOException.printStackTrace();
            }

            @Override
            public void onDisconnect() {
                System.out.println("Connection terminated.");
            }

            @Override
            public void onConnect() {
                System.out.println("Connection established");
            }

            @Override
            public void on(String event, IOAcknowledge ack, Object... args) {
                System.out.println("Server triggered event '" + event + "'");
            }
        });

        // This line is cached until the connection is establisched.
        socket.send("Hello Server!");
    } catch (MalformedURLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

and my Node.js / Socket.io: 和我的Node.js / Socket.io:

    var app = require('http').createServer(handler)
    var io = require('socket.io')(app); 
    var fs = require('fs');

    app.listen(1337);

    function handler (req, res) {
      fs.readFile(__dirname + '/index.html',
      function (err, data) {
        if (err) {
          res.writeHead(500);
          return res.end('Error loading index.html');
        }

        res.writeHead(200);
        res.end(data);
      });
    }

    io.on('connection', function (socket) {
      socket.emit('news', { hello: 'world' });
      socket.on('my other event', function (data) {
        console.log(data);
      });
    });

And i'm getting the following error: 我收到以下错误:

    06-09 03:59:53.955: W/System.err(11738): io.socket.SocketIOException: Error while handshaking
    06-09 03:59:53.965: W/System.err(11738):    at io.socket.IOConnection.handshake(IOConnection.java:322)
    06-09 03:59:53.965: W/System.err(11738):    at io.socket.IOConnection.access$7(IOConnection.java:292)
    06-09 03:59:53.970: W/System.err(11738):    at io.socket.IOConnection$ConnectThread.run(IOConnection.java:199)
    06-09 03:59:53.970: W/System.err(11738): Caused by: java.io.FileNotFoundException: http://192.168.1.60:1337/socket.io/1/
    06-09 03:59:53.975: W/System.err(11738):    at libcore.net.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:186)
    06-09 03:59:53.975: W/System.err(11738):    at io.socket.IOConnection.handshake(IOConnection.java:313)

On a browser it works, and the page at http://192.168.1.60:1337/socket.io/1/ is returning the following message (trough a browser): 在它运行的浏览器上,页面http://192.168.1.60:1337/socket.io/1/返回以下消息(通过浏览器):

{"code":0,"message":"Transport unknown"}

i don't know what to do to make it work ... please help :x 我不知道该怎么办才能让它发挥作用...请帮忙:x

Thanks :D 感谢:D

EDIT: 编辑:

As Larky said, i had to downgrade my version of Socket.io to 0.9.16 . 正如Larky所说,我不得不将我的Socket.io版本降级为0.9.16 It worked like a charm with the following node code: 它就像一个带有以下节点代码的魅力:

    var io = require('socket.io').listen(80); 

    io.on('connection', function (socket) {
      socket.emit('news', { hello: 'world' });
      socket.on('my other event', function (data) {
        console.log(data);
      });
    });

I solved the problem today by reverting to an earlier version of socket.io on the server-side (an earlier version of the socket.io Node module). 我今天通过在服务器端(早期版本的socket.io Node模块)恢复到早期版本的socket.io来解决了这个问题。 Perhaps the protocol changed? 协议可能改变了吗?

To do this: 去做这个:

  1. Delete the socket.io folder in your node_modules folder. 删除node_modules文件夹中的socket.io文件夹。

  2. On the console type: 在控制台类型上:

npm install socket.io@0.9.16 npm install socket.io@0.9.16

That should do it... it worked for me :) 应该这样做......它对我有用:)

(obviously this doesn't completely solve the problem but the earlier version of socket.io worked fine for me for my purposes) (显然这并没有完全解决问题,但早期版本的socket.io对我来说对我来说很好)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM