【问题标题】:not able to implement chatting on android using socket.io and node.js无法使用 socket.io 和 node.js 在 android 上实现聊天
【发布时间】:2015-12-29 16:53:11
【问题描述】:

我在 Web 服务器上使用 Node.js 和 Socket.io。我的客户在 Android 应用程序上。我正在使用 Nkzawa 库进行聊天。但无法在两个客户端之间甚至在服务器端发送或接收。 请帮帮我。

客户端代码。

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 发布日志
  • D/friend id(1433): ---238916 I/connected(1433): to 192.168.1.10:7474/db/data/cypher I/sent query as(1433): {"query":"START n=node (238916) RETURN id(n),n.First_Name,n.Last_Name", "params":{}} I/Choreographer(1433):跳过 171 帧!应用程序可能在其主线程上做了太多工作。 D/1 套接字连接(1433):成功真正连接了聊天个人中的 D/朋友 ID(1433):{“columns”:[“id(n)”,“n.First_Name”,“n.Last_Name”],D /聊天个人中的朋友ID(1433):“数据”:[[238916,“Amit”,“Joshi”]] D /聊天个人中的朋友ID(1433):} 238916 Amit Joshi
  • 插入数据后您没有调用 adapter.notifyDataSetChanged() 。作为一个好的做法,在 UI 线程中调用 add 方法。在您的示例中,它是在非 ui 线程中调用的。

标签: android node.js sockets


【解决方案1】:

在所有 socket.on 方法之后调用 socket.connect。 喜欢,

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-22
    • 2014-02-10
    • 2017-06-12
    • 2011-11-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多