2015-01-05 68 views
0

我在web服務器上使用Node.js和Socket.io。和我的客戶端在Android應用程序。我正在使用恩澤圖書館進行聊天。但無法發送或接收兩個客戶端,甚至在服務器端。 請幫幫我。無法在android上使用socket.io和node.js實現聊天

客戶端的代碼。

try { 
       socket = IO.socket("http://192.168.1.10:9090"); 
       socket.connect(); // initiate connection to socket server 

      } catch (URISyntaxException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 

       send.setOnClickListener(new OnClickListener() { 

        @Override 
        public void onClick(View v) { 
         // TODO Auto-generated method stub 
         socket.emit("chat_message",chattext=chat_text.getText().toString()); 
         adapter.add(new Data_Provider(position, chat_text.getText().toString())); 
         chattext=chat_text.getText().toString(); 
         //position=!position; 
         chat_text.setText(""); 
        }}); 



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

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

          socket.emit("foo", "hi"); 
          Log.d("1 socket connect", "successfuly really connected"); 

         } 

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

         @Override 
         public void call(Object... args) { 
         Log.d("socket connect", "successfuly connected to server"); 
         } 

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

         @Override 
         public void call(Object... args) { 
          Log.d("socket disconnect", "successfuly disconnected"); 

         } 

        }); 
       socket.on("chat_message", new Emitter.Listener() { 

         @Override 
         public void call(Object... arg0) { 
          // TODO Auto-generated method stub 
          String data = (String)arg0[0]; 

           adapter.add(new Data_Provider(true, data)); 
           chattext=data; 

         } 
        }).on(Socket.EVENT_ERROR, new Emitter.Listener() { 
          @Override 
          public void call(Object... args) { 
          Exception err = (Exception)args[0]; 
          Log.d("err", ""+err); 
          } 
       });; 
+0

請張貼從logcat的 – eriuzo

+0

d日誌/朋友ID(1433):--- 238916 I /連接(1433):以http://192.168.1.10:7474/db/data/cypher I /發送查詢爲(1433):{「query」:「START n =節點(238916)RETURN id(n),n.First_Name,n.Last_Name」,「params」:{}} I /編舞師(1433):跳過171幀!應用程序可能在其主線程上做了太多工作。 D/1套接字連接(1433):successfuly真正連接 個人聊天中的朋友ID(1433):{「id(n)」,「n.First_Name」,「n.Last_Name」 ], 個人聊天中的朋友ID(1433):「data」:[[238916,「Amit」,「Joshi」]] D /朋友id在聊天中個人(1433):} 238916 Amit Joshi – user3160062

+0

插入數據後不調用adapter.notifyDataSetChanged()。作爲一種很好的做法,在UI線程中調用add方法。在你的例子中,它在非ui線程中被調用。 –

回答

0

在所有socket.on方法之後調用socket.connect。 一樣,

socket.on(Socket.EVENT_CONNECT, onConnect); 
socket.on("custo event",CustomHandler);_ 
socket.connect();