Socket.io NodeJS 客户端

Socket.io client in NodeJS

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

都是用typescript写的,包版本是:

socket.io: ^4.4.0

socket.io-客户端:^4.4.0

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

问题是你必须在这里传递一个有效的 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获取更多信息。