ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 웹소켓과 devServer 설정 (Vue 3 기준)
    프론트엔드/Vue 2024. 5. 23. 18:52
    728x90

    웹소켓과 devServer 설정 (Vue 3 기준)


    웹소켓 (WebSocket)

    웹소켓은 클라이언트와 서버 간의 전이중 통신 채널을 제공하는 프로토콜입니다. HTTP와 달리, 웹소켓 연결은 초기 요청 후에 연결을 유지하며, 양방향 데이터 전송을 가능하게 합니다. 이는 실시간 애플리케이션(예: 채팅, 실시간 피드 업데이트 등)에 유용합니다.


    웹소켓 설정 예시 (Vue 3 + Socket.IO)

    클라이언트 측 (Vue 3 + Socket.IO)

    // main.js
    import { createApp } from 'vue';
    import App from './App.vue';
    import router from './routes';
    import { io } from 'socket.io-client';
    import SocketIO from 'vue-3-socket.io';
    
    const socketConnection = io('wss://example.com'); // 보안된 WebSocket 연결
    
    const app = createApp(App);
    
    app.use(router);
    
    app.use(new SocketIO({
      debug: true,
      connection: socketConnection,
    }));
    
    app.mount('#app');

     

    서버 측 (Node.js + Socket.IO)

    const http = require('http');
    const socketIo = require('socket.io');
    
    const server = http.createServer((req, res) => {
      res.writeHead(200, { 'Content-Type': 'text/plain' });
      res.end('WebSocket server');
    });
    
    const io = socketIo(server, {
      cors: {
        origin: "http://example.com",
        methods: ["GET", "POST"]
      }
    });
    
    io.on('connection', (socket) => {
      console.log('a user connected');
      
      socket.on('disconnect', () => {
        console.log('user disconnected');
      });
    
      socket.on('message', (msg) => {
        console.log('message: ' + msg);
        io.emit('message', msg);
      });
    });
    
    server.listen(3000, () => {
      console.log('listening on *:3000');
    });

     

     

    devServer 설정

    devServer는 주로 개발 환경에서 사용되는 로컬 서버로, 웹팩(webpack) 프로젝트를 위한 개발 서버를 설정하는 데 사용됩니다. devServer를 통해 HMR(Hot Module Replacement), 프록시 설정, 특정 포트 지정 등 여러 가지 개발 편의 기능을 설정할 수 있습니다.

     


    devServer 설정 예시


    vue.config.js에서의 설정 (Vue CLI)

    const { defineConfig } = require('@vue/cli-service');
    
    module.exports = defineConfig({
      transpileDependencies: true,
      devServer: {
        allowedHosts: 'all', // 모든 호스트를 허용합니다.
                     	 // 개발 중 다양한 도메인을 허용하기 위해 사용됩니다.
        port: 8080, // 개발 서버가 실행될 포트를 지정합니다. 기본값은 8080입니다.
        proxy: { // API 요청 및 웹소켓을 위한 프록시 설정입니다.
                 // 예를 들어, /api로 시작하는 요청을 http://localhost:3000으로 프록시합니다.
          '/api': {
            target: 'http://localhost:3000', // 프록시할 서버의 주소입니다.
            changeOrigin: true, // 요청 헤더의 원본(origin)을 대상(target) 주소로 변경합니다.
          },
          '/socket.io': {
            target: 'http://localhost:3000',
            ws: true, // WebSocket을 위한 설정
                      // 웹소켓 프록시를 활성화합니다.
            changeOrigin: true,
          },
        },
      },
    });
    728x90
Designed by 0-SIK.