Socket.IO 处理断开事件

2024-05-10

无法处理这个断开事件,不知道为什么套接字没有发送到客户端/客户端没有响应!

Server

io.sockets.on('connection', function (socket) {

  socket.on('NewPlayer', function(data1) {

    online = online + 1;
    console.log('Online players : ' + online);
    console.log('New player connected : ' + data1);
    Players[data1] = data1;
    console.log(Players);

  });

  socket.on('DelPlayer', function(data) {

    delete Players[data];
    console.log(Players);
    console.log('Adios' + data);

  });

  socket.on('disconnect', function () {

      socket.emit('disconnected');
      online = online - 1;

  });

});

Client

 var socket = io.connect('http://localhost');

    socket.on('connect', function () { 

        person_name = prompt("Welcome. Please enter your name");

        socket.emit('NewPlayer', person_name);

        socket.on('disconnected', function() {

            socket.emit('DelPlayer', person_name);

        });

    });

正如您所看到的,当客户端断开连接时,数组对象[person_name] 应该被删除,但事实并非如此。


好的,不要通过名称跟踪玩家所连接的套接字来识别玩家。你可以有一个像这样的实现

Server

var allClients = [];
io.sockets.on('connection', function(socket) {
   allClients.push(socket);

   socket.on('disconnect', function() {
      console.log('Got disconnect!');

      var i = allClients.indexOf(socket);
      allClients.splice(i, 1);
   });
});

希望这能帮助您以另一种方式思考

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Socket.IO 处理断开事件 的相关文章

  • 如何使用 jasmine.js 测试控制台输出?

    我正在研究文本 面向 Web 开发人员的专业 JavaScript 作者 Nicholas Zakas我正在使用 Jasmine js 测试这些示例 目前 我可以通过指定返回值来测试函数的输出 但是当我想要返回多条数据时 我会遇到麻烦 教科
  • Canvas drawImage 内联 svg 在 Firefox 上不起作用

    这是一个例子 它采用 svg 并将其转换为画布 http jsfiddle net Na6X5 944 http jsfiddle net Na6X5 944 var can document getElementById canvas1
  • ngRepeat 中的函数执行过于频繁

    我有三个tabs里面有不同的htmlng include 这些选项卡使用以下方式显示ng repeat 只有一个 HTML 模板包含函数调用 但它执行了 3 次 每个模板执行一次 ng repeat迭代 这里出了什么问题以及如何解决它 va
  • Xhr上传event.loaded问题

    opts xhr function var xhr new window XMLHttpRequest Upload progress xhr upload onprogress function e if e lengthComputab
  • jQuery:如何将 jQuery 日期选择器放入 Bootstrap Popover 中? [关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我试图在引导弹出窗口中显示 jquery datepicker 并尝试了解决方案引导程序弹出窗口内的日期选择器 关闭 https
  • 在复选框内映射复选框 ReactJS

    我有一个函数 一旦主复选框被选中 就会触发子复选框 并且所有这些复选框都是从 JSON 映射的 主复选框 最高级别 及其下面的所有子复选框 第二级别 都会在单击时显示 并且效果很好 我想要显示的是单击时主复选框 第三级别 的子复选框2 级项
  • 等待两个异步函数完成,然后在 Node.js 中继续

    我正在 Node js 中开发一个应用程序 其中调用异步函数两次 并将值分配给全局变量 问题是我想使用这两个调用的结果来做其他事情 但是这个其他事情不会等待结果被分配 这是我的代码 var a var b let x abcd foo x
  • 如何在 jquery 中创建“可重用”函数?

    我有这段代码效果很好 function displayVals var phonevals bphonesel val bphone val phonevals select change displayVals displayVals 我
  • 谁添加“_”单下划线查询参数?

    我有一个在 Apache 上运行的 PHP 服务器 我收到很多类似这样的请求 10 1 1 211 02 Sep 2010 16 14 31 0400 GET request 1283458471913 action get list HT
  • 在 PHP 中合并文件块

    出于教育目的 我想创建文件块上传 你们怎么知道所有块何时上传 我试图从temp并重命名它们 使它们按正确的顺序排列 然后与最后一个块将它们合并在一起 然而 我猜最后发送的并不是最后收到的 所以fopen on chunks 失败 因为它们尚
  • 无法获取子 DOM 元素

    注 由于问题有点复杂 为了可读性对代码进行了抽象 We ve a
  • ChartRangeFilter 作为谷歌时间轴图表的缩放功能,可使用数据视图从专用谷歌电子表格中读取数据

    我的目标是整合Whitehat 提供的这种缩放功能 https stackoverflow com questions 49306638 google timeline visualization dont change series ro
  • SWC with JavaScript:如何处理 CSS 导入以及如何绝对导入?

    TL DR 如何告诉 SWC 编译 React 组件中导入的 CSS 文件 如何告诉 SWC 在测试和 React 组件中编译绝对导入 这是一个最小的可重现示例 https github com janhesters riteway swc
  • 反应本机套接字 io 没有从客户端发出事件

    尝试将socket io client与react native 现在是ios 一起使用 到目前为止 连接 从客户端接收服务器端事件似乎工作正常 但是我似乎无法从客户端发出任何事件 Client var socket io http loc
  • 如何在 blob 类型中使用 UTF-8?

    我必须通过 csv 文件导出表 csv 文件数据来自服务器 按 Blob 类型 Blob size 2067 type text csv async exportDocumentsByCsv this commonStore setLoad
  • 如何检查浏览器中消失的元素?

    How can I inspect an element which disappears when my mouse moves away 我不知道它的 ID 类别或其他任何信息 但想检查它 我尝试过的解决方案 在控制台内运行 jQuer
  • JSON.stringify 对于大型对象来说非常慢

    我在 javascript 中有一个非常大的对象 大约 10MB 当我对其进行字符串化时 需要很长时间 因此我将其发送到后端并将其解析为一个对象 实际上是带有数组的嵌套对象 这也需要很长时间 但这不是我们在这个问题中的问题 问题 我怎样才能
  • 通过 Javascript 填充 ReactJS HTML 表单

    我正在开发一个应用程序 在打开第 3 方网站后 我可以在浏览器上下文中运行我自己的 Javascript 作为一个基于reactjs构建并具有登录表单的示例网站 您可以参考此链接 我正在尝试在reactjs生成的表单中填写用户名和密码 但是
  • 如何在express中动态渲染/加载页面?

    我需要使用express gt 3 0 框架动态加载 渲染nodejs v1 8 15 中页面的一部分 一般来说 我想创建一个单页应用程序 我在页面顶部有一个带有链接的菜单 单击链接将更改下面的内容 就像 AJAX 页面加载一样 例如 gt
  • 在 JSON 对象中存储和发送原始文件数据

    我正在寻找一种方法来传输任何文件类型的原始文件数据和任何可能的内容 我的意思是文件和文件内容都是用户生成的 在 Backbone 前端中使用 xhr ajax 调用两种方式针对 Django 后端 编辑 也许问题仍然不清楚 如果您在 IDE

随机推荐

  • Android getIdentifier 不适用于字符串?

    我真的不知道为什么 但我无法检索字符串的 Id 这是我的代码 int resId getApplicationContext getResources getIdentifier About EmailPrompt string com y
  • MariaDB闲置一段时间后无法工作

    在我的网络应用程序上 我经常遇到以下异常 java sql SQLNonTransientConnectionException 无法发送查询 最后一个数据包未完成 它通常发生在系统长时间闲置之后 重新启动 tomcat 可以暂时解决该问题
  • C中的链表按升序排序

    我正在为我的 C 编程课程编写一个程序 该程序应该为我们提供使用链表的经验 作业的最后部分之一要求我们获取一个链接列表 并使用我们之前在程序中编写的前置或附加函数按升序对其进行排序 struct lnode int datum struct
  • 设置具有不同输入的测试方法

    我想在 C 中测试所有代码路径的以下方法 public int foo int x if x 1 return 1 if x 2 return 2 else return 0 我见过这个pex单元测试 http fernandomachad
  • 我可以在谷歌云功能上托管nodejs GRPC服务器吗?

    我有一个在 AWS 实例上运行的 Nodejs GRPC 服务器 并且想迁移到谷歌云功能 这可能吗 我的无服务器选项有哪些 对的 这是可能的 to use 云功能 https cloud google com functions 为您gRP
  • Git:由于看似随机的合并,更改不断丢失

    我有一种感觉 这将是一个显而易见的答案 但我似乎无法解决 似乎发生的情况是 我向服务器提交 推送了一些更改 并且我的副本上的一切都显示正常 然后 另一位开发人员从同一分支的服务器中拉取 据我所知 据称看到了我的更改 进行一些修改 将它们提交
  • 如何设置 $!在 Perl 中

    我想在 perl 中编写一些设置 的函数 与内置 perl 函数类似 当我尝试执行此操作时 它抱怨 参数 无法创建管理员用户 在标量分配中不是数字 我试过用谷歌搜索这个 但不幸的是谷歌不会在 所以结果很难得到 if createUser a
  • Java 基准测试 - 为什么第二个循环更快?

    我对此很好奇 我想检查哪个函数更快 所以我创建了一些代码并执行了很多次 public static void main String args long ts String c sgfrt34tdfg34 ts System current
  • 访问 bash 命令行参数 $@ 与 $*

    在许多 SO 问题和 bash 教程中 我发现可以通过两种方式访问 bash 脚本中的命令行参数 gt cat testargs sh bin bash echo you passed me echo you passed me 结果是 g
  • Kivy - 获取任何 Android 设备上 DCIM 文件夹的路径

    我想确切地知道如何仅使用 Kivy 获取 Android 上 DCIM 文件夹的路径 PyJinus 不是一个选项 因为它目前不适用于 Python 3 5 到目前为止我尝试过的是 DATA FOLDER os getenv EXTERNA
  • 从 servlet 向 applet 发送数据:我怎样才能实现这个?

    我要发送 发送HashMap反对请求它的小程序 servlet 具有这样的功能HashMap目的 我有办法做到这一点吗 Applet requests HashMap object gt Servlet listens to this re
  • 当模拟器存在时 Flutter 应用程序不运行

    模拟器在那里 但当我启动应用程序时它不起作用 请帮忙 我已经尝试了一切 Cal Flutter 新手 我已遵循安装指南并尝试了其他堆栈流答案的修复 我正在运行 Windows 8 1 单一用户 我已经从命令提示符和 android 终端中尝
  • AttributeError:类型对象“Word2Vec”没有属性“load_word2vec_format”

    我正在尝试实现 word2vec 模型并收到属性错误 AttributeError 类型对象 Word2Vec 没有属性 load word2vec format 下面是代码 wv Word2Vec load word2vec format
  • 访问网络编码性能测试的响应

    WebTestRequest request1 new WebTestRequest this Context Environment ToString IBWeb DefaultSB aspx request1 Headers Add n
  • Makefile 和通配符

    好吧 这是我当前的 makefile 设置 有一些文件名为public01 c public02 c等等 我正在尝试使用以下方法为每个人制作目标文件public o带有通配符的标签 public o public c hashtable h
  • <%# Eval("State") %> 或 <%# DataBinder.Eval(Container.DataItem, "state")%>

    拥有和拥有有什么区别 in your aspx页面 与具有 in your aspx page Eval State 是一个简化形式DataBinder Eval Container DataItem State 句法 它仅适用于数据绑定模
  • TeamCity 中代码覆盖率的属性过滤器语法

    有人知道从 Teamcity 的覆盖范围中排除代码的语法吗 我在某些方法上使用 ExcludeFromCodeCoverageAttribute 并希望排除这些方法 它在 Visual Studio 中运行良好 但我不明白如何在 TeamC
  • 如何通过 ViewPager 使用多窗格布局

    Android 设计指南建议使用多窗格布局 http developer android com design patterns multi pane layouts html combining views 但就实际实现而言 没有给出示例
  • “NoneType”对象在 TableWidgets 中没有属性“text”

    我试图在 Python 上使用 TableWidgets 但遇到了一个问题 我想检查桌子是否已满 str当然 def add table self self kala self comboBox currentText self code
  • Socket.IO 处理断开事件

    无法处理这个断开事件 不知道为什么套接字没有发送到客户端 客户端没有响应 Server io sockets on connection function socket socket on NewPlayer function data1