【问题标题】:Getting multiple socket response with every single socket.emit in socket.io使用 socket.io 中的每个 socket.emit 获取多个套接字响应
【发布时间】:2017-02-09 10:49:30
【问题描述】:

这是我的代码示例,我通过单个套接字发射获得了对同一个用户的多个套接字响应。有时它也会在每次服务器重启时增加 +1。

....    
socket.emit('groupmessage', {
                                        username: sender_id,
                                        server_chat_id:chat_id,
                                        user_message:"ownmessage",
                                        server_time:server_time,
                                        message: new_message,
                                        action: "ownmessage",
                                        temp: 'new'
                        });
....

【问题讨论】:

    标签: android ios node.js sockets


    【解决方案1】:

    这是因为你的socket.on(event, listener) 被多次执行 次(针对同一事件)。

    这里有一些可能会有所帮助的东西。

    关于:通过套接字的响应在附加到 EventListener 中接收。

    // Initialize socket
    socket = IO.socket(SERVER_URL);
    
    // Turn on event
    socket.on(event, listener);
    // connect the socket
    socket.connect();
    
    // emit data
    socket.emit(event, "data");
    
    // disconnect socket
    mSocket.disconnect();
    // Turn Events Off
    socket.off(event, listener);
    

    问题原因:当一个事件被添加到同一个侦听器的多个实例时,该操作会执行相同的次数。

    原因:添加多个侦听器可能会导致

    1. 之前的 Activity 仍然持有对 Connected Socket 的引用,该 Socket 仍然活着,具有相同的 Event。
    2. 在活动回调中对 Socket 的处理不当,导致 socket.on(event, listener)socket.off(event, listener) 之间的同步取消。

    解决方案:

    1. 打开 ON 事件监听器和 CONNECT onResume() 中的套接字。

    2. DISCONNECT套接字并在onPause()关闭监听器。

    【讨论】:

      猜你喜欢
      • 2018-01-19
      • 1970-01-01
      • 2016-10-26
      • 2019-06-06
      • 1970-01-01
      • 2016-11-23
      • 2015-12-26
      • 1970-01-01
      • 2012-11-16
      相关资源
      最近更新 更多