【问题标题】:Socket.io client in NodeJSNodeJS 中的 Socket.io 客户端
【发布时间】:2022-01-06 09:10:34
【问题描述】:

我想用 nodejs 服务和主服务构建一个微服务基础设施,这些服务之间的通信应该通过 socket.io 发生,我已经设置了我的 socket.io 服务器,但是他们的浏览器客户端(socket.io-client ) 在 nodejs 中不起作用(我猜它使用一些仅浏览器的 API)。有没有办法创建 nodejs socket.io (NOT WEBSOCKETS) 客户端?

编辑

我的客户端代码:

import { io } from "socket.io-client";
const socket = io("127.0.0.1:3000");

socket.on("connect", () => {
  console.log(socket.id);
});

socket.on("disconnect", () => {
  console.log(socket.id);
});

我的服务器端代码:

import { Server } from "socket.io";
const io = new Server();

io.on("connection", (socket) => {
  console.log(socket)
});

io.listen(3000);

两者都是用打字稿写的,包版本是:

socket.io: ^4.4.0

socket.io-client: ^4.4.0

问题是,我的控制台中没有任何日志,所以我认为客户端有问题,因为 socket.io 没有在客户端兼容性图中提到节点。

【问题讨论】:

  • 有一个socket.io-client library 专门用于nodejs。我用过。它有效。
  • 如果该库中的某些内容不适合您,我建议您发布您的代码并解释什么不工作。可能是您的代码或环境有问题,而不是库。
  • 我使用了他们的服务器和客户端官方文档中的打字稿代码。 socket.io/docs/v4/client-initializationsocket.io/docs/v4/server-initialization
  • 我重复一遍。如果它对您不起作用,请发布您的代码并解释什么不起作用。这不是图书馆的问题。这是您的代码或环境的问题。如果没有看到您的代码,我们将无法提供帮助。我不确定您希望我们如何在不查看您的代码的情况下“猜测”您的问题。
  • 嘿 :) 很抱歉没有提供足够的信息,希望我的编辑解决了这个问题。

标签: node.js typescript websocket socket.io


【解决方案1】:

问题是你必须在这里传递一个有效的 URL:

const socket = io("127.0.0.1:3000");

我不知道为什么 socket.io 没有给你一个错误,但是如果你把它改成:

const socket = io("http://127.0.0.1:3000");

然后,它会工作。


如果您在环境中设置DEBUG=socket.io-client,它不会显示错误,但会显示它正在尝试连接:

undefined//127.0.0.1:3000

我猜这会给你一个线索。

如果您在您的环境中设置DEBUG=*,您将获得更多调试信息(如此之多以至于有点难以分类)。


设置Logging and Debugging Socket.io了解更多信息。

【讨论】:

  • 工作正常!谢谢,我也很好奇为什么没有错误。
  • @unterstrichserver - 有一个connect_error 事件,但您没有在听。另外,请参阅我在答案中添加的有关调试标志的注释,这些标志可为您提供更多调试信息。
猜你喜欢
  • 2013-12-15
  • 1970-01-01
  • 2014-01-13
  • 2012-05-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-17
  • 1970-01-01
相关资源
最近更新 更多