2015-01-05 69 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();