• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

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

[复制链接]
菜鸟教程小白 发表于 2022-12-11 17:41:37 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

这是我的代码示例,我通过单个套接字发射获得了对同一用户的多个套接字响应。有时它也会在每次服务器重启时增加 +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'
                        });
....



Best Answer-推荐答案


Its because your socket.on(event, listener) is executed multiple times (for same event).

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

关于:通过套接字的响应被附加到 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);

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

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

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

解决方案:

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

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

关于android - 使用 socket.io 中的每个 socket.emit 获取多个套接字响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39798620/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap