菜鸟教程小白 发表于 2022-12-11 17:41:37

android - 使用 socket.io 中的每个 socket.emit 获取多个套接字响应


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

<pre><code>....   
socket.emit(&#39;groupmessage&#39;, {
                                        username: sender_id,
                                        server_chat_id:chat_id,
                                        user_message:&#34;ownmessage&#34;,
                                        server_time:server_time,
                                        message: new_message,
                                        action: &#34;ownmessage&#34;,
                                        temp: &#39;new&#39;
                        });
....
</code></pre></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><blockquote>
<p>Its because your <code>socket.on(event, listener)</code> is executed multiple
times (for same event).</p>
</blockquote>

<p>这里有一些可能会有所帮助的东西。</p>

<p><strong>关于:</strong>通过套接字的响应被附加到 <strong>Event</strong> 的 <strong>Listener</strong> 接收。</p>

<pre><code>// Initialize socket
socket = IO.socket(SERVER_URL);

// Turn on event
socket.on(event, listener);
// connect the socket
socket.connect();

// emit data
socket.emit(event, &#34;data&#34;);

// disconnect socket
mSocket.disconnect();
// Turn Events Off
socket.off(event, listener);
</code></pre>

<p><strong>问题原因:</strong>当一个事件被添加到同一个监听器的多个实例时,该 Action 被执行相同的次数。</p>

<p><strong>原因:</strong>添加多个监听器可能会导致 </p>

<ol>
<li>之前的 Activity 仍然持有对 Connected Socket 的引用,该 Socket 仍然活着,具有相同的 Event。</li>
<li>在 Activity 回调中对 Socket 的处理不当,导致 <code>socket.on(event, listener)</code> 和 <code>socket.off(event, listener)</code> 之间的同步失效。</li >
</ol>

<p><strong>解决方案:</strong> </p>

<ol>
<li><p>在 <strong>onResume()</strong> 中打开 <strong>ON</strong> 事件监听器和 <strong>CONNECT</strong> 套接字。 </p></li>
<li><p><strong>DISCONNECT</strong>套接字并在<strong>onPause()</strong>中<strong>关闭</strong>监听器。</p></li>
</ol></p>
                                   
                                                <p style="font-size: 20px;">关于android - 使用 socket.io 中的每个 socket.emit 获取多个套接字响应,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/39798620/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/39798620/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: android - 使用 socket.io 中的每个 socket.emit 获取多个套接字响应