Next.js, Express 및 TypeScript와 함께 Socket.io를 사용하는 방법(요구문 대신 ES6 가져오기)
11481 단어 nextjstypescripttutorialjavascript
Socket.io를 설정하는 동안
import
대신 ES6require
구문을 사용하여 TypeScript 프로젝트에서 Socket.io를 설정하는 방법을 설명하는 문서를 찾기 위해 고군분투했습니다. Next.js와 함께 모든 것이 어떻게 맞아야 하는지 설명하는 것을 찾는 것은 훨씬 더 어려웠습니다.그래서 탄생한 포스트...
처음부터 시작한다면...
TypeScript/Express 커스텀 서버 Next.js 프로젝트를 만들려면 Next.js 저장소에 있는 custom Express Server example과 custom TypeScript Server example을 조합하여 내 프로젝트를 생성했습니다.
먼저 사용자 정의 TypeScript 서버를 생성하기 위해 명령
npx create-next-app --example custom-server-typescript
을 사용하여 프로젝트를 생성했습니다. 그런 다음 맞춤형 Express 서버 예제를 살펴봄으로써 Express를 개조했습니다. 결과server.ts
는 이 게시물의 맨 아래에 있습니다.다른 예를 따르지 않은 이유는 무엇입니까?
내가 온라인에서 본 대부분의 예는 다음과 같은 작업을 수행하기를 원합니다.
import express from 'express';
const app = express();
const server = require('http').Server(app);
const io = require('socket.io')(server);
그러나 피할 수 있다고 생각한다면 TypeScript 코드에서 두 개 또는 임의의
require
문을 원하지 않았습니다.ES6 가져오기만 있는 내 server.ts
필요한 종속 항목(Next.js/React/TypeScript에 추가):
npm install -s express @types/express socket-io
기다리던 코드:
import express, { Express, Request, Response } from 'express';
import * as http from 'http';
import next, { NextApiHandler } from 'next';
import * as socketio from 'socket.io';
const port: number = parseInt(process.env.PORT || '3000', 10);
const dev: boolean = process.env.NODE_ENV !== 'production';
const nextApp = next({ dev });
const nextHandler: NextApiHandler = nextApp.getRequestHandler();
nextApp.prepare().then(async() => {
const app: Express = express();
const server: http.Server = http.createServer(app);
const io: socketio.Server = new socketio.Server();
io.attach(server);
app.get('/hello', async (_: Request, res: Response) => {
res.send('Hello World')
});
io.on('connection', (socket: socketio.Socket) => {
console.log('connection');
socket.emit('status', 'Hello from Socket.io');
socket.on('disconnect', () => {
console.log('client disconnected');
})
});
app.all('*', (req: any, res: any) => nextHandler(req, res));
server.listen(port, () => {
console.log(`> Ready on http://localhost:${port}`);
});
});
server.ts 설명
내
server.ts
와 Next.js 예제에서 생성된 것의 주요 차이점은 http
모듈을 사용하여 서버를 실행하는 반면 Express 전에는 서버를 실행한다는 것입니다. 이는 Socket.io가 설정되면 서버에 연결할 수 있도록 하는 데 필요합니다.추가 변경 사항:
app
를 nextApp
로 변경하여 next
앱임을 더 명확하게 하고, 같은 이유로 handler
를 nextHandler
로 변경했습니다. 또한 Express에서는 app
변수를 사용하는 것이 관례입니다. http.CreateServer()
가 아닌 const server = require("http").Server(app);
를 사용하여 HTTP 서버를 만듭니다. io.attach()
. const io = require("socket.io")(server);
. 요약
이 게시물은
import
대신 ES6require
를 사용하는 Next.js 사용자 정의 서버에서 Socket.io를 사용하는 방법을 보여줍니다.이 게시물이 저에게 반응을 떨어뜨리는 데 도움이 되었다면! 개선할 수 있는 것을 찾았습니까? 댓글로 알려주세요.
읽어 주셔서 감사합니다!
Reference
이 문제에 관하여(Next.js, Express 및 TypeScript와 함께 Socket.io를 사용하는 방법(요구문 대신 ES6 가져오기)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/jameswallis/how-to-use-socket-io-with-next-js-express-and-typescript-es6-import-instead-of-require-statements-1n0k텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)