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);
}
});;
请张贴从logcat的 – eriuzo
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
插入数据后不调用adapter.notifyDataSetChanged()。作为一种很好的做法,在UI线程中调用add方法。在你的例子中,它在非ui线程中被调用。 –