在 NextJS 13 上使用 App 目录实现 socket.io

Anı*_*ksu 9 socket.io next.js next.js13

如何用App目录初始化socket app/api/socket/route.js

它不会返回目录http.ServerResponse中下面类似示例的实例pages/api/socket.js。它返回NextResponse没有用于创建 io 实例的套接字属性。

import { Server } from "socket.io";

export default function SocketHandler(req, res) {
  if (res.socket.server.io) {
    console.log("Socket is already running");
  } else {
    console.log("Socket is initializing");
    const io = new Server(res.socket.server);
    res.socket.server.io = io;

    io.on("connection", (socket) => {
      console.log("client connected", socket.id);
    });
  }
  res.end();
}
Run Code Online (Sandbox Code Playgroud)

小智 0

我也有同样的问题。我认为你不能在应用程序目录中使用 webSockets ,你应该创建一个单独的服务器来处理套接字或者使用页面来处理套接字,但是在 next.js 版本 13.2.5 之后有一个问题,套接字服务器无法在其中工作它。