2013-04-28 4 views
2

node.js 서버에 연결할 안드로이드 응용 프로그램을 개발하려고합니다. 여기에 오류 MSG는 다음과 같습니다socket.io-java-client 및 node.js - 핸드 셰이 킹 중 오류

04-28 14:24:52.250: W/System.err(811): io.socket.SocketIOException: Error while handshaking 
04-28 14:24:52.250: W/System.err(811): at io.socket.IOConnection.handshake(IOConnection.java:322) 
04-28 14:24:52.259: W/System.err(811): at io.socket.IOConnection.access$600(IOConnection.java:39) 
04-28 14:24:52.259: W/System.err(811): at io.socket.IOConnection$ConnectThread.run(IOConnection.java:199) 
04-28 14:24:52.259: W/System.err(811): Caused by: java.lang.ArrayIndexOutOfBoundsException 
04-28 14:24:52.306: W/System.err(811): at io.socket.IOConnection.handshake(IOConnection.java:318) 
04-28 14:24:52.306: W/System.err(811): ... 2 more 

서버 :

var http = require('http'); 
    http.createServer(function (req, res) { 
     res.writeHead(200, {'Content-Type': 'text/plain'}); 
     res.end('Hello World\n'); 
    }).listen(8881, '192.168.1.107'); 
    console.log('Server running at http://192.168.1.107:8881/'); 

클라이언트 : 내가 무슨 일을하고 있어요

public class RestClientActivity extends Activity { 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     try { 
      SocketIO socket = new SocketIO("http://192.168.1.107:8881/"); 
      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(); 
     } 
    } 

어떤 아이디어? 브라우저에 http://192.168.1.107:8881/을 입력하면 페이지에 "Hello World"가 표시되지만 socket.io-java-client 라이브러리를 사용하여 연결할 수 없습니다. 당신이 socket.io를 사용하여 서비스에 대한 나머지 클라이언트를 작업하려고 경우

+0

,의 기본적인 예는 서버 측 소켓 IO 스크립트로 이것을 시도, 당신은 듣는'socket.io'을 구성하지 그 HTTP 서버 IP : 포트, 완전한 코드인가? – Gntem

+0

네, 이것이 완전한 코드입니다 - 죄송합니다.이 주제는 저에게 새로운 것입니다. –

+0

그런 서버에 연결하는데 사용할 수있는 라이브러리를 알고 있습니까? –

답변

2

먼저 그냥 HTTP 서버에 충실하고 당신을 가정 클라이언트 측 사용 HttpClient를 ..

에, 잘 될 것입니다 필요가 없습니다 이 android socket.io 클라이언트를 사용하십시오. Java Socket.io client 나는 또한 함께 일해 왔습니다.

는 HTTP 서버를 만들 서버 측에서 LearnBoost/socket.io

var server = require('http').Server(); 
var io = require('socket.io')(server); 
io.on('connection', function(socket){ 
    socket.on('message', function(data){ 
    console.log("Received message : "+data); 
    socket.emit("message","echoing back : "+data); 
    }); 
    socket.on('disconnect', function(){ 
    // client disconnected 
    }); 
}); 
server.listen(8881,"192.168.1.107"); 
관련 문제