반응형

NodeJS 로 채팅 서비스 만들기

시스템 소프트 웨어 강의를 배우면서 리눅스를 이용한 c 코드 C - S 를 만들어보니 재미가 있어 NodeJS 로 구현해 보기로 했다.

위의 링크를 통해 배우고 구현해 보기로 했다.

필요 모듈

const fs = require('fs');
// express module
const express = require('express');
// socket module
const socket = require('socket.io');
// html module
const http = require('http');

NodeJS 기본 모듈을 제외하면 express, socket.io 모듈이 추가로 필요하다.

Socket.io module

Socket.io 에 대한 함수를 알아보자

  • socket.on(’event’, Callback func) : 해당 이벤트를 받고 콜백함수를 실행
  • socket.emit(’event’, Data) : 이벤트 명을 지정하고 데이터 보냄
    • event 종류
      • connection : client 와 연결시 발생
      • disconnection : client 와 연결해제되었을 때 발생

Socket 은 객체 io 를 생성한다.

const io = socket(server)

생성된 io 를 이용해 데이터를 주고 받는 함수를 만들 수 있다.

main.js 에 만든 이벤트 함수들은 총

  • newUser
  • message
  • disconnect

이며 이를 코드로 표현하면

io.sockets.on('connection', function(socket){

    socket.on('newUser', function(name){
        socket.name = name
        // newUser 이벤트로 가져온 name 을 update 이벤트로 데이터 전송
        io.sockets.emit('update', {type : 'connect', name:'SERVER', message: name + 'was connected'})
    })

    socket.on('message', function(data){
        data.name = socket.name
       // message 이벤트로 가져온 data 를 다른 client 에게 update 할 데이터 전송
        socket.broadcast.emit('update', data)
    })

    socket.on('disconnect', function(){
        socket.broadcast.emit('update', {type : 'disconnect', name:"SERVER", message : socket.name + 'Disconnected'})
    })
})

라고 표현할 수 있다.

홈페이지에 접속하면 사용자의 이름을 받는다.

socket.on('connect', function(){
    var name = prompt('Welcome', '')

    if(!name){
        name = 'Annonymous'
    }
    socket.emit('newUser', name)
})

prompt 를 이용해 이름을 입력받아 emit 하여 newUser를 실행한다.

이어 input 박스에 적은 메시지를 채팅창에 표현해보려고 한다.

반응형

'Web > NodeJS' 카테고리의 다른 글

[NodeJS] 1.DB연동  (0) 2022.01.29

+ Recent posts