小编Vol*_*pps的帖子

具有Android服务的Socket Io

美好的一天。考虑到Android的Socket IO库及其服务,我有一个非常具体的问题。

重要的是要提到我的设备是我正在测试的huawei p8 lite。

它在这里:

我有一个套接字Io库,该库正在我创建的服务中初始化

•我将侦听器设置为用于新消息的套接字io

•如果应用程序没有在用户进程中杀死,则一切工作都像字符。

•服务的目的是即使应用程序被杀死也保持套接字IO连接保持活动状态,以便向用户通知新消息。

•一旦应用程序被杀死,套接字IO连接即被断开

无论我尝试什么,我都会尝试所有可能的方法:隔离Service进程,为Service提供另一个进程,启动粘性,在服务销毁后立即重新创建它而不是粘性等等。

唯一有效的方法是startForeground()方法,但我不想使用它,因为它将遵循设计原则,而且我也不想显示有关正在运行的服务的任何通知。

我的问题是下一个:有人可以帮助我,告诉我即使应用程序被杀死了,我如何仍可以保持Socket IO连接的活动?

这是服务的代码。

package com.github.nkzawa.socketio.androidchat;

import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.app.Service;
import android.content.Context;
import android.content.Intent;
import android.os.IBinder;
import android.support.annotation.Nullable;
import android.support.v4.app.NotificationCompat;
import android.util.Log;
import android.widget.Toast;

import java.net.URISyntaxException;

import io.socket.client.IO;
import io.socket.client.Socket;
import io.socket.emitter.Emitter;

public class SocketService extends Service {
    private Socket mSocket;
    public static final String TAG = SocketService.class.getSimpleName();

    @Override
    public IBinder onBind(Intent intent) {
        // TODO: Return the communication channel to the service.
        throw …
Run Code Online (Sandbox Code Playgroud)

sockets service android threadpool background-task

5
推荐指数
1
解决办法
4650
查看次数

Array.Push覆盖之前的Value Node Js

再会。我有一个全局数组,它必须是全局的。

var comments= [];
Run Code Online (Sandbox Code Playgroud)

我有一个套接字的回调,我在其中迭代它并添加值。

更好的代码:

    socket.on('commentAdded', function (data) {
    if (data !== null) {
        var stringify = JSON.stringify(data);
        var json = JSON.parse(stringify);

        Object.keys(users).forEach(function (key) {
            if (key !== "null") {
                data.eachUserId = key;
                console.log("data added with id " + key + " the size of comments is " + comments.size);
                comments.push(data);
            }
        });
        console.log("comment was added");
    }

    socket.broadcast.emit('onCommentAdded', data);
});
Run Code Online (Sandbox Code Playgroud)

在这里,我正确地打印了所有内容,理想情况下,我想向现有数据(即 json 数据)console.Log("data added with id)...添加一个新值,新值的名称必须与我在循环内执行的值完全不同,如您所见。eachUserId

这就是我之后如何获取物品的方法。

   for (var f = 0; f …
Run Code Online (Sandbox Code Playgroud)

javascript arrays loops push node.js

1
推荐指数
1
解决办法
5747
查看次数