如何在Android Studio中保持socket.io与服务的连接

时间:2019-07-27 07:40:04

标签: java android socket.io

我有一个应用,希望每次使用socket.io库向我的用户发送消息。我的问题是在服务中运行socket.io时,打开应用程序后一切正常。但是,当我关闭应用程序时,服务正在运行,但套接字已断开连接,并且没有从服务器获取任何数据;当我打开应用程序时,它的工作非常好。

我该怎么办?这是我的代码:

public class HelloService extends Service {    // the fragment initialization parameters, e.g. ARG_ITEM_NUMBER
 private static final String ARG_PARAM1 = "param1";
 private static final String ARG_PARAM2 = "param2";
// TODO: Rename and change types of parameters
 private String mParam1;
 private String mParam2;
 private Socket socket;
{
    try{
        socket = IO.socket("http://192.168.1.35:3000");
    }catch(URISyntaxException e){
        throw new RuntimeException(e);
    }
}

@Nullable
@Override

public IBinder onBind(Intent intent) {
    socket.connect();
    socket.on("message", handleIncomingMessages);
    return null;
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
    Toast.makeText(this, "Service Started", Toast.LENGTH_LONG).show();
    socket.connect();
    socket.on("message", handleIncomingMessages);
    return START_STICKY;
}
@Override
public void onDestroy() {
    super.onDestroy();
    Toast.makeText(this, "Service Destroyed", Toast.LENGTH_LONG).show();
}
private Emitter.Listener handleIncomingMessages = new Emitter.Listener(){
    @Override
    public void call(final Object... args){
                JSONObject data = (JSONObject) args[0];
                String message;
                String imageText;
                try {
                    message = data.getString("text").toString();
                    Log.d("javab",  message.toString());

                } catch (JSONException e) {
                    // return;
                }
    }
};

}

0 个答案:

没有答案
相关问题