当前位置: 首页 > 知识库问答 >
问题:

为什么socket.io客户端发出触发它自己的监听器…即使服务器离线?

韩捷
2023-03-14

多年后,我在使用socket io时遇到了一个奇怪的问题。几年前,我可以在客户端使用以下代码

socket.emit('user', {userId: 2});
// and somewhere else in the code id listen for incoming 'user' replies
socket.on('user',(reply) => {
    // do something with user data received from server
});

现在,当我在客户端拥有相同的代码,并且发出“user”请求时,socket.on(“user”)回调会立即用请求有效负载触发,请求有效负载本应发送到服务器(脱机)。

我以为socket.on()监听器只由服务器的答复触发,而不是由客户端本身的传出消息触发。

socket.io应该这样工作吗?还是我在配置中遗漏了什么?

共有1个答案

殳宸
2023-03-14

我想我通过偶然发现另一个关于socket.io如何保持连接的帖子解决了这个问题。

socket.emit(“user”,{userid:2});就是一个例子。在我真正的应用程序中,我使用了事件名称“ping”,这似乎是socket.io保留的。客户端不断地ping并不断地监听ping。

因此,当我添加我自己的socket.on('ping')监听器时,它连接到socket.io内部ping/pong系统中。(至少我认为是这样)

 类似资料:
  • 我正在使用windows,当socket.io发出事件时,命令提示符显示以下内容: 我想不出问题出在哪里,我做错了什么?

  • 我正在创建我的产品,并与这个问题。有一天,我设置了Socket.io,一切都很好。第二天,我将服务器和客户端从http迁移到HTTPS。迁移后客户端和服务器端仍然连接,但不能从客户端发射到服务器,从服务器发射到客户端。 我的ssl证书位于和中,它们加载正确。运行在上的服务器 我的示例react组件。我的react应用程序运行在上。HTTPS连接良好,工作良好。 我该怎么办?也许我在中错误地使用了s

  • 问题内容: 我有一个socket.io服务器正在运行,并且有一个带有socket.io.js客户端的匹配网页。一切正常。 但是,我想知道是否有可能在另一台机器上运行一个单独的node.js应用程序,该应用程序充当客户端并连接到上述的socket.io服务器? 问题答案: 使用Socket.IO-client应该可以做到这一点:https : //github.com/LearnBoost/sock

  • 问题内容: 我做了一个自定义的Hibernate Event监听器,扩展了org.hibernate.event.PreInsertEventListener。自定义侦听器会覆盖onPreInsert方法并设置“联系人”实体的字段,然后再使用DAO将其保存在数据库中。 问题是,在侦听器为其提供值之前该字段为null,并且默认的hibernate事件侦听器在我的自定义侦听器之前自动触发。当他们检查d

  • 当我提交表单时,我在浏览器控制台中看到“emit”消息,所以我知道表单提交事件正在触发,但我没有在服务器上收到测试消息。客户端或服务器端似乎什么也没发生,“socket.emit”函数似乎什么也没做。 我做错了什么?

  • 问题内容: 仅仅为了概念验证而使用socket.io,到目前为止,一切工作都很好,除了我无法在客户端实现我的emit回调。我必须在这里丢失一些愚蠢的东西,但是文档目前还不是杀手。服务器可以很好地拾取“ getSomeData”事件,并且在任何地方都没有错误。 根据我在客户端socket.io源代码中看到的信息,它检查发出的最后一个参数是否是一个函数,并始终将其用作回调,但是对任何更深层的调试对我来