[Node.js] 실시간 채팅 서비스 만들기(3) - 정적 파일 제공
간단한 예제 파일을 생성했으니 서버 코드를 수정하여 위의 파일들을 클라이언트(웹)에서 볼 수 있도록 해봅시다!
먼저 fs 모듈을 추가로 require 해줍니다!
그리고 app 생성 이후 코드에
app.use('/css', express.static('./static/css') )
app.use('/js', express.static('./static/js'))
위 코드는 정적파일을 제공하기 위해 미들웨어(Middleware)를 사용하는 코드입니다.
app.use()를 사용하여 원하는 미들웨어를 추가하여 조합할 수 있습니다!
기본적으로는 클라이언트가 http://서버주소/css 로 액세스 할 경우 액세스가 거부됩니다.
서버측에서는 아무런 작업을 하지않았기 때문이죠
app.use('/css', express.static('./static/css')) 를 추가해주면 XM 실시간 채팅 실행되는 서버 코드 기준 디렉토리의 static 폴더 안의 css 폴더는
외부 클라이언트들이 /css 경로로 액세스할 수 있습니다!
아래 js 부분도 동일합니다!
이제 마지막으로 fs 모듈을 사용하여 index.html 파일을 읽고 클라이언트로 읽은 내용을 전달해줘야 합니다!
app.get() 부분에 위와 같이 코드를 추가합니다.
fs 모듈은 Node.js 에서 기본적으로 제공하는 모듈입니다!
파일과 관련된 처리를 할 수 있죠.
readFile() 함수는 지정된 파일을 읽어서 데이터를 가져옵니다!
만약 에러가 발생하면 err에 에러 내용을 담아오게 되죠
response(응답) 객체를 통해 읽어온 데이터를 전달해주어야합니다!
지난시간에는 response.send() 로 그냥 보내버렸는데 오늘은
head, write 등 다른 코드가 보입니다.
우리가 클라이언트에게 보낼 내용은 index.html의 내용입니다.
HTML 파일이라는 것을 알려야하기 때문에 헤더에 해당 내용을 작성해서 보내줍니다.
헤더를 작성했으면 이제 HTML 데이터를 보내줍니다.
모두 보냈으면 완료됬음을 알립니다.
write를 통해 응답할 경우 꼭! end를 사용해주어야합니다.
저장 후 서버를 다시 시작해줍니다.
HTML가 잘 전달되었고 CSS도 정상적으로 액세스가 가능합니다!
이제 index.html과 index.css를 사용하여 채팅창처럼 구현 할 예정입니다.
아까 css 폴더를 생성하고 js 폴더도 생성하였는데 js 폴더는 추후에 클라이언트 기능 구현할 때 자바스크립트 파일을 저장하는 용도로 사용할 예정입니다!
[Node.js] 실시간 채팅 서비스 만들기(4) - Socket.io 기초
기본 이벤트(connection, disconnect 등)을 제외하고 여러분들이 원하는 이벤트 명을 지정하여 통신도 가능합니다!
위 코드에서 send 이벤트는 제가 정의한 이벤트입니다.
서버측 코드는 마무리 되었습니다.
다 마무리 하셨으면 js 폴더에 index.js 파일을 생성해줍니다.
위와 같이 코드를 작성해주세요!
클라이언트에서는 connection 이벤트가 아니라 connect 입니다!
먼저 서버와 소켓이 연결되었을 때 id가 test인 요소의 값을 '접속 됨' 으로 설정합니다.
아래의 send 함수는 버튼을 클릭했을 때 호출이 되는데요
id가 test인 요소의 값을 서버로 전송 하는 코드입니다!
중요한점은 socket.emit(' send ' . ) 이벤트 XM 실시간 채팅 명입니다!
on은 수신 , emit은 전송 이라고 이해하시면 되는데요
send라는 이름의 이벤트를 전송했으면 받는곳에서는 on('send') 가 있어야 받을 수 있습니다.
이벤트명이 동일한것 끼리만 데이터 송/수신이 XM 실시간 채팅 가능합니다!
만약 전송하는 부분에서는 emit('aa')라고 코드를 작성했는데
수신하는 부분에서 on('abc') 라고 한다면 전달 받을 수 없습니다.
이벤트명은 송/수신측에서 모두 동일 해야합니다!
모두 작성을 하셨으면 저장하신 후 서버를 실행시켜봅시다
서버 실행 후 접속해보면 바로 '유저 접속 됨' 문자가 콘솔에 찍히는것을 확인하실 수 있습니다.
그리고 클라이언트도 확인해보시면 아래와같이 바뀌었을겁니다.
원상태는 빈 칸 이지만, 클라이언트 측의 connect 이벤트가 수신되고 id가 test인 요소의 값을 '접속 됨'으로 변경하였기 때문에
위와같이 값이 추가되었습니다.
원래있던 내용을 지우고 전송버튼을 눌러봅시다
(버튼을 누르면 위에서 작성한 send 함수가 호출되고 입력한 데이터가 서버로 전송됩니다)
서버의 콘솔을 확인해보시면 정상적으로 데이터가 전달되는 모습을 보실 수 있습니다!
Socket.io로 실시간으로 데이터를 송/수신하는 예제를 작성해보았습니다!
채팅은 오늘 진행한 내용의 응용이므로 크게 어렵지 않습니다!
오늘 진행한 내용은 아래에 모두 저장되어있습니다.
다음 시간에는 UI를 꾸미고 채팅 기능을 구현해보도록 하겠습니다!
접속 하기만 하면 C:\Blog\node_modules\socket.io\dist\index.js:272
stream_1.pipeline(readStream, zlib_1.createGzip(), res, onError);
^
TypeError: stream_1.pipeline is not a function
at Function.sendFile (C:\Blog\node_modules\socket.io\dist\index.js:272:26)
at Server.serve (C:\Blog\node_modules\socket.io\dist\index.js:248:16)
at Server.srv.on (C:\Blog\node_modules\socket.io\dist\index.js:208:22)
at emitTwo (events.js:126:13)
at Server.emit (events.js:214:7)
at parserOnIncoming (_http_server.js:602:12)
at HTTPParser.parserOnHeadersComplete (_http_common.js:117:23)
라는 에러가 뜹니다ㅜㅜ
자바스크립트(JavaScript) socket.io를 활용한 실시간 채팅창 구현
부스트캠프 5주 프로젝트를 진행하며 사용중인 socket.io에 대해 정리를 해보고자 한다. 간단한 예제를 통해 사용법을 정리하는 것이 목표이다! 기초적인 것까지 설명하기 위해 노력할 것이다.
socket.io란?
위키백과에는 다음과 같이 정리가 되어 있다.
Javascript에서 WebSocket을 더 쉽게 사용할 수 있게 개발된 라이브러리라고 보면 될 것 같다.
환경 구축하기 👨🔧
express를 사용해 서버를 구축할 것이다. 나는 express generator를 활용할 것이다.
위의 명령어를 순서대로 입력하면 다음과 같은 파일들이 생성될 것이다.
설명을 좀 덧붙이자면 express-generator를 전역으로 설치한 뒤 view engine을 사용하지 않는 형태의 서버를 만들겠다는 의미이다.
설치를 했다면 다음 명령어를 순서대로 입력하자.
아래와 같은 화면이 나왔다면 성공!
그 후 아래 명령어를 통해 socket.io를 설치해주면 기본적인 환경설정이 끝난다.
HTML 파일 작성하기 📄
아래 코드를 참고해서 작성하도록 하자.
서버 코드 작성하기
이제 본격적으로 서버에 socket.io를 연결시켜줘야 한다. 우리는 Node.js의 HTTP Server에 socket을 연결시킬 것이다.
다음 코드를 참고하여 작성하도록 하자.
코드를 보면 알 수 있듯이 http server를 통해 socket.io를 초기화 시킨 것을 알 수 있다. 그 후 통신이 잘 되는지 확인하기 위해 connection 이벤트가 발생했을 때 console.log를 찍는 코드를 추가해보았다.
클라이언트 코드 작성하기
서버쪽에서 연결을 위한 준비를 끝냈으니 클라이언트에서도 연결을 하기 위해 코드를 작성해줄 것이다.
public/javascripts 폴더에 socket.js라는 파일을 추가할 것이고 public/index.html을 수정해줄 것이다. 각각의 코드는 다음과 같다.
는 socket.io-client을 불러오는 코드이다. 이 코드를 통해 우리는 io를 global하게 사용할 수 있게 된다. 따라서 socket.js에서 io()를 통해 socket을 초기화 할 수 있는 것이다.
여기까지 작성한 후 서버를 다시 실행해보면 터미널에 a user connected가 뜨는 것을 확인할 수 있을 것이다. 클라이언트와 서버간 소켓이 연결됐다는 것을 알 수 있다!
채팅 기능 구현하기
소켓이 연결되었으니 본격적으로 채팅 기능을 구현해볼 것이다. 서버쪽과 클라이언트 쪽에서 필요한 이벤트를 emit/on 할 것이다. emit은 이벤트를 발생시키는 것이고 on은 발생한 이벤트를 받는 거라고 생각하면 된다. 서버, XM 실시간 채팅 클라이언트 코드를 수정해보자.
서버쪽에서는 chat message라는 이벤트를 클라이언트에게 받고 이를 다시 클라이언트에게 알려주는 코드가 추가되었다.
클라이언트쪽에서는 필요한 DOM에 접근하여 이벤트를 할당해주는 것이 주된 변경사항이다. chatForm에 이벤트 리스너를 등록하고 submit이 발생할 때마다 socket.emit('chat meesage', meessage) 를 통해 서버에게 이벤트가 발생했음을 알린다.
또한 socket.on('chat message') 를 통해 XM 실시간 채팅 서버가 해당 이벤트를 emit했을 경우 설정해놓은 callback 함수를 동작시킨다. 여기서는 chatBox에 받은 message를 추가하는 함수가 실행될 것이다.
지금까지의 코드를 저장한 후 서버에서 동작 결과를 확인해보자. 채팅 기능이 잘 작동하는 것을 확인할 수 있다!
Broadcast 기능 및 css 적용시켜보기
보통 채팅을 치면 나의 채팅과 다른 사람의 채팅이 다르게 보이는 경우가 많다. (예를 들면 카카오톡) broadcast를 활용하여 이를 구현해볼 것이다.
현재까지의 로직은 서버에서 연결된 모든 socket에 이벤트를 알리는 방식으로 되어 있다. broadcast를 사용하면 자신을 제외한 나머지 클라이언트에게 이벤트를 알리게 된다.
자신의 메세지는 클라이언트에서 바로 처리하게 하고 다른 사람의 메세지는 서버에서 받은 후 처리하는 방식을 통해 자신과 다른 사람의 메세지를 구분해볼 것이다.
각각의 파일을 수정해보자.
클라이언트 쪽에서는 css 적용을 위해 각 상황에 맞는 className을 지정해주었으며 서버쪽에서는 기존에 io.emit이 socket.broadcast.emit으로 바뀐 것을 확인할 수 있다. 이 상태에서 동작을 확인해보면 나의 메세지는 채팅창에 추가가 되지 않고 다른 사람의 메세지만 채팅창에 추가가 되는 것을 확인할 수 있다. socket.js 파일의 주석을 해제하고 실행을 해보면 원하는대로 잘 XM 실시간 채팅 동작하는 것을 확인할 수 있다!
socket.io를 활용한 채팅방을 구현해보았다. 다음 포스팅에서는 room 기능을 활용한 분리된 채팅방을 구현하는 방법을 적어볼까 한다. (시간이 허락한다면…)
XM 실시간 채팅
초 간단하게 회원가입하거나 로그인해서 이용하실 수 있습니다.
새 소책자 추가
소책자 관리 수정 혹은 삭제할 소책자를 선택해주세요
프레임워크
개발 도구
네트워크와 서버
데이터베이스
프로젝트 관리
모집 · 홍보
실시간 채팅 기능 관련 조언부탁드립니다.
현재 만드는 사이트내에 슬랙 ( https://slack.com/ ) 과 같은 팀 실시간 채팅 기능 (디스코드와 비슷하게 특정 해시태그 관련 해서 채팅방에서 실시간으로 채팅)을 외주를 맡겨서 추가하고 싶은데 어떤 기술을 사용해서 만드는게 나을까..
현재 만드는 사이트내에 슬랙 (https://slack.com/) 과 같은 팀 실시간 채팅 기능 (디스코드와 비슷하게 특정 해시태그 관련 해서 채팅방에서 실시간으로 채팅)을 외주를 맡겨서 추가하고 싶은데 어떤 기술을 사용해서 만드는게 나을까요? 아니면 이런 비슷한 팀채팅이 오픈소스로 많은데 오픈소스(zulip 등)로 시작하는게 시간,금전적으로 유리할까요?
뎁브 2018-12-10
뎁브 님께서 2018-12-10에 입문자의 길에 올린 질문
1개의 답변
외주를 주신다고 해도 결국은 오픈소스를 이용해서 채팅을 구현하게 될 것 같습니다. 즉, 채팅 서버를 직접 구현하는 오픈 소스를 사용하느냐, 말씀하신 Zulip같은 업체에서 제공하는 오픈 소스를 사용하느냐의 차이인 것 같습니다. ..
외주를 주신다고 해도 결국은 오픈소스를 이용해서 채팅을 구현하게 될 것 같습니다.
즉, 채팅 서버를 직접 구현하는 오픈 소스를 사용하느냐, 말씀하신 Zulip같은 업체에서 제공하는 오픈 소스를 사용하느냐의 차이인 것 같습니다.
먼저, 채팅 서버를 직접 구현하는 경우,
socket.io 같은 기술을 이용하여 채팅 서버를 구현하는 방법 등이 있겠습니다만,
채팅 클라이언트나 UI도 XM 실시간 채팅 XM 실시간 채팅 직접 만들어야 하고 서버의 관리도 직접 해야합니다.
물론 관리할 수 있는 능력만 있다면 직접 관리하면서 원하는 기능을 만들면 되긴 합니다.
그런데 socket.io를 이용하는 오픈 소스들이 말 그대로 오픈 소스인지라
괜찮은 오픈 소스를 찾으려면 시간이 좀 걸릴 수 있습니다.
Zulip 같은 서비스를 이용한다면
서버를 구축하지 않고 API만 이용해서 만드는 방법과, Zulip 오픈 소스 서버를 받아서 서버도 직접 만드는 방법이 있는데요,
서버를 구축하지 않고 API만 이용하는 경우
서버를 관리할 필요도 없고, 관련된 오픈 소스도 많이 제공하기 때문에
처음부터 그럴싸한 채팅 서비스를 올리기에 좋을 것 같습니다.
게다가 여기서의 오픈 소스는 Zulip이라는 업체에서 제공하는 소스이기 때문에
어느 정도의 괜찮은 품질이 있는 소스라고 보시면 될 것 같습니다.
다만 외부 서비스이기 때문에 서비스적으로 종속될 수도 있다는 것인데
다시 말해 외부 서비스가 지원하는 범위 안에서만 기능을 사용해야 하고,
해당 서비스에 문제가 생기는 경우(속도가 느려진다든가, 접속이 안된다는가 등) 직접 컨트롤 할 수 없으며
간혹 유료 서비스로 전환되면 금전적 지출이 발생할 수도 있을 것입니다.
이 문제가 고민이라면 Zulip의 오픈 소스 서버를 직접 받아서 만들어 올리는 방법이 있긴 한데
서버를 올리고 관리하는 과정이 생각보다 간단하지는 않을 수도 있습니다.
(클라우드용으로 사용하는 서버인지라 필요 이상으로 무겁고 기능이 많을 수 있기 때문입니다)
말씀하신 상황을 제가 대략적으로 예상하고 살펴보았을 때는
일단은 Zulip 채팅 서비스의 API만 이용하여 채팅을 만드는 것도 괜찮은 방법이신 것 같습니다.
요즘은 이런 API 방식의 서비스 품질이 좋아져서 문제가 생기는 경우가 드물기도 하고
서비스가 제공하는 기능이나 소스들도 많기 때문에 처음부터 만드는 것보다 좀 더 수월하게 만들 수 있는 것 같습니다.
요컨대, 만드시는 서비스가 대형 프로젝트가 아니고
채팅 기능에 특별히 커스터마이징이 필요하지 않다면
서버 구축 필요 없이 Zulip API를 이용하는 오픈 소스로 만드는 것도 괜찮은 선택이라고 보여집니다.
원하시는 답변이 되었는지 모르겠습니다만
또 궁금하시거나 설명이 필요한 것들이 있으시면 언제든지 질문 남겨주시기 바랍니다~
kimho 2018-12-12
Node.js 실시간 채팅 > 그누보드5 플러그인
다크 모드 보기 상단으로
그누보드5 플러그인
Node.js 실시간 채팅 정보
주의사항
1. 익스플로러에서는 작동 하지 않습니다. 다른 브라우저를 사용해주세요.
2. 간혹 프로그램이 제대로 작동하지 않거나, 보안 문제 등이 있을 수 있습니다.
(이메일 필요 시 *** 개인정보보호를 위한 이메일주소 노출방지 *** 으로)
그누보드외 추가준비물 : node.js
위 쿼리문 2개를 db서버에서 실행합니다.
(charset 부분과 engine 부분, 테이블 접두사(g5_) 부분은 자신에게 맞게 고쳐주세요)
2. 파일을 다운로드하고, g5 폴더안의 모든 것을 그누보드루트에 그대로 올려줍니다.
3. node 폴더는 웹서버 루트 밖에 적당한 위치에 넣어줍니다.
4. 자신의 웹서버 컴퓨터에 ssh로 접속합니다.
5. 채팅서버파일(server.js,config.js,package.json,controllers 폴더)이 있는 폴더(아까 그 node 폴더)로 이동합니다.
7. config.js에서 db설정/ssl설정을 자신에게 맞게 수정해줍니다.
ssl 설정의 경우 다음과 같이 입력합니다.
8. node server 명령을 실행합니다.(항상 실행은 pm2나 screen 쓰세요)
9. node 서버와 그누보드 서버를 분리하는 경우 extend 폴더의 chat.extend.php를 다음과 같이 수정합니다.
10. 끝!(접속 : http://사이트주소/(그누보드루트/)chat)
굵게/기울임체 : 마크다운과 같음
또는 url앞에 타겟: 이렇게 붙일수도 있습니다(타겟앞에 _는 붙이지않습니다)
2020-05-07 Mysql 커넥션이 자동으로 XM 실시간 채팅 끊기는 오류를 수정하여 재업 하였습니다.
2020-05-08 현재 접속자 표시 기능을 추가하여 재업 하였습니다.
2020-05-11 history 기능을 추가하여 재업 하였습니다.
2020-05-14 자신이 보낸 메시지의 css를 변경하여 재업 하였습니다.
2020-05-18 html 태그를 제거하는 구문 추가 + 일부 css 등을 변경하여 재업 하였습니다.
2020-05-26 사용자 차단 기능을 추가하여 재업 하였습니다.
2020-05-29 사용자 차단 해제 기능/node.js서버와 웹서버의 도메인이 다를 시 cors 오류 방지 코드를 추가하여 재업 하였습니다.
2020-06-07 각종 서식(굵은글씨 등)과 url링크, 사용자 닉네임 강조 기능을 추가하였습니다.
2020-06-27 서식 부분 수정 후 재업 하였습니다. 링크서식을 ## 이(가) 아닌 을 사용해주세요.
2020-10-05 charset 지정이 가능하도록 수정+common.css 일부 수정했습니다.
2021-08-14 프로그램과 db구조를 전면적으로 갈아엎고 package.json 파일과 ssl 대응 기능을 추가했습니다.
2021-08-20 chat.extend.php 파일 추가(node서버 호스트명 변경 가능)
2022-02-04 /unban 명령어 버그 수정+명령어 입력값 검증 추가+/banlist 명령어를 추가했습니다.
댓글 전체
node.js가 이미 설치되어 있는 가정 하에 설명하는 겁니다.
node.js 설치는
윈도우 : nodejs 사이트에서 인스톨러 받아서 깔면됩니다
리눅스 : vvvvvv
우분투 :
curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -
sudo apt-get install -y nodejs
centos (이것 외에 추가로 명령어를 실행해야 할수도 있습니다) :
curl -sL https://rpm.nodesource.com/setup_12.x | sudo bash -
이렇게 명령어를 실행하면 됩니다.
6번 구문은 node.js 폴더에서 추가 모듈을 설치하는 명령어입니다.
nodejs호스팅서버에 node폴더를 올려준뒤, screen등에서 node server.js 를 실행하시고 웹서버 그누보드루트에 chat폴더를 올려주시고, chat/js/common.js 파일의
. 'ws://'+location.hostname+':1121/ . (1라인쯤에 있습니다)
에서 '+location.hostname+' 부분을 nodejs 호스팅서버 도메인주소(혹은 ip주소)로 수정하시고 접속하시면 될겁니다(node폴더의 config.js에서 DB설정을 자신에게 맞게 바꿔주세요)
node호스팅서버 따로 받았고 그누보드가 설치된 호스팅이 따로있는데
config.js의 XM 실시간 채팅 db에서 그누보드 db를 가져오는데 이건 어떻게 처리하면될까요.
config.js의 db정보에는 node호스팅의 db를 셋했는데.
그누보드 가 올려진 사이트의 데이타는 어떻게 가져와야하는지 모르겟네요
여기설정부분이 이해가 가질않네요 .
function LivechatServerConfig() <
this.db = new function() < // db 설정
this.host = '127.0.0.1'; 호스트부분은 아이피만 적으면 되는건가요?
this.port = 3306; 여기 포트부분이 ssh 접속할때 포트인가요 아님 아파치에 설정된 포트인가요?
this.user = 'ahhhhhh';
this.password = 'animalcrossinghagoshipeunde';
this.dbname = 'switchgaeopdda_ahhhhhh'; 여기는 그누보드 db 네임을 적는건가요?
>();
this.main = new XM 실시간 채팅 function() < // 기본 설정
this.port = 1121; >();
this.table = new function() < // 테이블 이름
this.prefix = 'g5_'; // 테이블 접두사
this.member = this.prefix+'member';
this.livechat = this.prefix+'livechat';
this.banlist = this.prefix+'livechat_banlist';
>();
>
첫번째 port는 DB서버 포트이구요, 두번째 port는 socket서버 포트입니다.
dbname은 그누보드DB이름을 적는겁니다. host는 포트없이 ip나 도메인만 적으면 됩니다.
node호스팅과 웹호스팅을 받아서 node호스팅에
server폴더에 있는파일을 업로드하였고 웹호스팅에 그누보드와 chat 폴더를 업로드하였습니다.
node호스팅의 db접속은 웹호스팅에 해두었고, 채팅폴더에있는 common.js에
var socket = XM 실시간 채팅 io.connect('ws://"+노드서버도메인+":1121/index.goza?mb_id='+mb_id);
처럼 해두었는데 안되네요..
저기 1121은 어떤포트인지 socket포트라면, socket 포트는 어디서 보나요..
socket.io.js?ver=20200427:2 GET 홈페이지도메인.com:1121/socket.io/?mb_id=admin&EIO=3&transport=polling&t=NBfVMW3 net::ERR_CONNECTION_TIMED_OUT
이렇게 나오면서 계속 서버연결이 실패했다고 나오는데.. 어디를 손봐야되는거죠 ㅜㅜ
혹시몰라서 1121 포트도 열고 다했는데 안되네요.. ㅜㅜ
네 ㅜㅜ 노드를 열었는데도 안되요
node server.js명령어후
Server is running. port: 1121
Mysql: Successfully connected.
윤진님,
혹시 apache 쓰십니까?
3일째 삽푸고있는데 도와주세요 ㅜㅜ
리눅스라면 그렇게 하라는 겁니다.
이거 참고하시면 될 거 같습니다.
1. 질의문(create table어쩌고 그부분)을 모두 복사한다.
2. DB클라이언트로 DB서버에 접속하고 (phpmyadmin 써도됨)그누보드가 설치된 db 선택 후 쿼리(query) 탭에 들어가서 그 내용을 붙여넣습니다.
3. g5_ ,myisam,utf8 부분은 각각 테이블접두사, db엔진(그대로 놔두셔도 되긴합니다),db 문자인코딩으로 수정합니다.
4. 실행합니다.
SSL 상황에서도 잘 되네요.
아 그리고 CSS는 불러오는데 . 뭔가 이상해요.
위와 같이 잡아주니 딱 좋네요.
실시간 채팅 - 접속자 : 1명은 어떻게 표시하는건가요?
위와 같이만 표기되어있더라구요.
1. node 폴더에 있는 server.js 에 있는 http를 전부 https로 바꾼다.
SSL 인증서 경로는 상대경로나 절대경로 모두 인식한다.
2. js 폴더에 있는 common.js에서 첫번째 줄에
nodejs포트는 node폴더에 있는 config.js 파일에 10번째 줄에 있는 this.port 와 같아야 합니다.
그리고 반드시 nodejs의 포트는 외부 노출이 되어야합니다. 즉, 방화벽을 해제해야 합니다.
더 좋은 소스가 나오면 좋은데 ㅜ ㅜ
저도 겨우 적용하는 수준이라 아쉬워요.
node 서버도 Successfully connected. 뜨는거보니 잘실행된거같은데 서버에 아무 반응이 없어요.
/chat들어가서 채팅을쳐도 주소창에 /chat/#만뜨고 아무반응이없고 혹시 몰라 node서버 주소로
아이피주소:1121로 들어가도 스크린에서 아무 로그도 안뜨고 무한로딩에 '아이피주소에서 전송한 데이터가 없습니다.'라고 뜨네요.
DB와 노드가 연결이 안된 것 아닐까요?
서버는 정상적으로 Server is running. port: 1121
Mysql: Successfully connected. 켜지는것 같은데 주소/chat으로 들어가면 node서버가 바로 팅겨버리네요.
여기에 구축하는 방법에 대해 적어보았습니다.
안녕하세요 현재 해당 채팅 프로그램을 구동중인데
아래와 같은 오류가 납니다.
모듈은 모두 설치했는데 혹시 더 설치해야할게 있나요?
우분투 1604 환경이고
nodejs 버전 v12.19.1
npm 버전 6.14.8
입니다.
다른 nodejs 예제는 다 잘실행되는데 이것만 이런 에러가나네요..
[[email protected] node]# node server.js
/var/www/html/testmoa/node/config.js:2
this.db = new (() => <
^
TypeError: (intermediate value)(intermediate value)(intermediate value)(intermediate value)(intermediate value)(intermediate value) is not a constructor
at new LivechatServerConfig (/var/www/html/testmoa/node/config.js:2:15)
at Object. (/var/www/html/testmoa/node/config.js:21:18)
at Module._compile (module.js:577:32)
at Object.Module._extensions..js (module.js:586:10)
at Module.load (module.js:494:32)
at tryModuleLoad (module.js:453:12)
at Function.Module._load (module.js:445:3)
at Module.require (module.js:504:17)
at require (internal/module.js:20:19)
at Object. (/var/www/html/testmoa/node/server.js:1:75)
0 개 댓글