socket.io客户端第二次无法连接

2023-12-25

目前,我正在使用nodejsexpress实现一个API,然后它需要连接到socket.io并发送事件。

该API位于socket.io-client(客户端),它连接到socket.io(服务器)

第一次 API 调用:success

第一次调用 API 时会建立连接,发送消息并且可以断开套接字,并在客户端和服务器端调用“disconnect”回调。

第二次 API 调用:failure

当第二次调用 API 时,无法建立与服务器的连接,客户端的“客户端”回调不会被调用。

第三次 API 调用:success

然后我尝试重新启动客户端,保持其他内容不变。再次调用API,成功连接到socket.io,一切正常。

谁能解释一下这背后的逻辑?

Updated

客户端.js

   App.getByUserId(message.to_id, function(error, app) {
  var  socket = io.connect('http://127.0.0.1:9002');
  socket.on('connect', function(){
  console.log("client connect socket id:" + socket.id);
    console.log("appkey:" + app.private_token);
    socket.emit('appkey.check',{appkey: app.private_token, uuid: message.to_id.uuid},    function(data){
        socket.emit("forceDisconnect");
        socket = null;

    });
});

您只是遇到了 Socket.IO 的众多“功能”或“错误”之一,具体取决于您如何看待这一点。 Socket.IO 尝试变得聪明并重用连接(这实际上会导致很多连接问题)解决这个问题的方法是使用force new connection选项在你的io.connect:

io.connect('http://127.0.0.1:9002', { 'force new connection': true });

你还可以做的是使用https://github.com/primus/primus https://github.com/primus/primus如果您使用 socket.io 转换器,它会包装 Socket.IO。在内部,它完全消除了对io.connect并使用更低的级别io.Socket构造函数来创建比普通 socket.io 更稳定的连接。

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

socket.io客户端第二次无法连接 的相关文章

  • 通过forever为nodejs自动重新启动服务[重复]

    这个问题在这里已经有答案了 我发现forever可以永远运行nodejs服务器 永远支持这个功能吗 If the nodejs script is modified changed the server shld restarted aut
  • Electron - 如何使用主进程和渲染进程

    此时 经过大量研究和谷歌搜索 我了解了 main 和 renderer 的作用 以及它们在 Electron 应用程序中的重要性 然而 我在这里向所有有知识的人发出我的请求 请给我一个机会clear解释如何在我的应用程序中具体实现这一点 我
  • 在 Nodejs Express 上无法访问该网站?

    我对 Node 完全陌生 我尝试在托管 centos 7 vultr com 上运行一个测试站点 我已经安装了nodejs express Hello js const express require express const app e
  • 环境变量未加载到 Nodejs 中的 process.env

    我正在构建一个nodejs api 并设置了dotenv打包为开发依赖项以将变量加载到process env在开发人员的本地计算机上 请注意 当我登录时 我使用sudo i作为root 我的目的是在部署过程中 环境变量将在我的 Ubuntu
  • 向 Stripe 提交付款请求时出现“无此类令牌”错误

    我正在使用 Stripe API 设置付款 以允许用户在 iPad 上登录其 Stripe 帐户并接受任何人的付款 为此 我使用 Stripe Connect 登录并保存他们的帐户 ID 然后使用STPPaymentCardTextFiel
  • 客户端 websocket 限制消息长度

    我正在使用 node js 开发一个 websockter 服务器 并且我发现了 Chrome 中的一些怪癖 Chrome OS X 10 7 64 位 上的最大字符串长度为 17740 而 Firefox 似乎可以毫无问题地处理非常大的字
  • nodeJS 防止 res.download 超时

    我对我的 nodeJS 服务器进行了 POST 调用 该服务器在 mongo 数据库上搜索一些数据并返回包含所请求数据的 CSV 文件 问题是数据搜索和处理超过了nodeJS默认的2分钟超时 在不同的场景中 y 使用 res writeHe
  • 错误:无法检测网络(事件=“noNetwork”,代码=NETWORK_ERROR,版本=providers/5.6.8)

    我想连接到ganache我得到一个error我不知道如何解决它 这是我的deploy js代码 它是脚本node js const ethers require ethers const solc require solc const fs
  • 是否可以同时读取和写入 java.net.Socket?

    是否可以同时从套接字读取和写入 我有一个连续读取套接字的线程 由于只有一个线程正在从套接字读取数据 因此读取操作是线程安全的 现在我有很多线程 比如100 写入套接字 因此 很明显 我必须通过这样做来使写操作线程安全 package com
  • node-cron 每 3 小时运行一次作业

    我试图每 3 小时运行一次 node cron 作业 但我不确定我做得是否正确 现在我正在使用 8 它是否正确 您应该将秒和分钟值清零 并使用 3 的步长 其 cron 表达式是 0 0 3 其计算结果为 每 3 小时 0 秒 0 分钟 你
  • 如何使用ssl启动flask_socketio应用程序?

    我应该如何使用 SSL 将 app run 转换为 sockio run 我有下面的应用程序启动代码与 Flask 开发服务器一起运行 if name main app run ssl context ssl cert ssl key 我现
  • 如何停止中间件链?

    如果出现错误 如何正确结束中间件链 在我的代码中我有 if someProblem res status statuscode json message oops return 然而之后链中的中间件不断被调用 给我Can t set hea
  • 在模块之间传递 Socket.IO 套接字的正确方法是什么?

    目前我有一个 getter setter 套接字模块 如下所示 var socket module exports getSocket getSocket module exports setSocket setSocket functio
  • 如何在 javascript ES6 类中链接异步方法

    我想链接类中的方法 我对同步方法有问题 但我不知道如何用异步方法做到这一点 例如这个类 class Example constructor this val 0 async setTimeout gt this val 1 return t
  • 在 Sails js 中调用 REST API

    我使用 Sails js 我不知道如何调用 REST api 并获取响应数据 我的控制器 var request require request var http require http var https require https m
  • Apache httpd 上的选择性代理端口转发

    我正在尝试将 WordPress 集成到在 Nodejs 服务器上运行的网站中 并启用 Apache Httpd 端口转发 以将所有请求从 80 端口转发到 Nodejs 端口 9000 我已将 WordPress 安装到 Apache h
  • 为 Moodle 创建 LTI 提供程序

    我正在尝试为 Moodle 创建一个 LTI 提供程序 我需要从 Moodle 获得的信息 课程名称 学生和教师 以及启用单点登录 获取会话 令牌 cookie 我做了一项研究 发现 Moodle 3 支持 LTI v2 这基本上是通过 R
  • fs.statSync 与缓冲区“错误:路径必须是没有空字节的字符串”

    我已经读入这样的文件缓冲区 let imageBuffer try imageBuffer fs readFileSync some path to image jpg catch e console log error reading i
  • 如何在node.js解析查询中设置dns服务器?

    我正在尝试设置 Google DNS 服务器8 8 8 8在 Node js 中解析查询 这样做的正确方法是什么 在命令行中通常我们可以执行以下操作 nslookup stackoverflow com 8 8 8 8 Server 8 8
  • 让 webpack 热更新在我的同构 Web 应用程序中正常工作

    我正在创建一个带有 Node Express 后端和 React 前端的 Web 应用程序 我 我认为 大部分内容都已启动并运行 但让浏览器执行热刷新的最后一步并未按预期工作 我会尝试在这里发布所有相关设置 如果您需要其他任何信息来找出我哪

随机推荐