• 로그인
  • 장바구니에 상품이 없습니다.

home2 게시판 Node.js, Express 게시판 유저간 채팅기능이 구글클라우드로는 잘 안됩니다.

유저간 채팅기능이 구글클라우드로는 잘 안됩니다.

5 글 보임 - 1 에서 5 까지 (총 5 중에서)
  • 글쓴이
  • #32238

    최요환
    참가자

    nodejs, mongoDB 

    강의내용 모두 숙지하고

    적용해서 나만의 사이트를 만들어보고 있는데요.

    일단, localhost:8080 에서는 모든 것이 다 잘 됩니다.

    그런데, 구글클라우드로 사이트를 배포해서 다른 기기에서 접속해서 문제없이 잘 되기만 하면 되는 상황인데요.

    다른 모든 기능은 구글클라우드로 구현해도 다 잘 되는데,  실시간 채팅기능만 안됩니다.

    같은 pc에서 따로 로그인하여 채팅할때는 안되거나 되기는 되더라도, 메시지가 너무 늦게 뜨기도 합니다. 1분 남짓기다려야 합니다.

    다른pc끼리 혹은 스마트폰으로 접속해서 채팅하면 메시지가 아예 안나오네요.

    채팅메시지를 입력하면 아무 반응이 없지만, 

    mongoDB에는 입력한 채팅메시지가 들어가 있습니다.

    여기서 더 어떻게 진행해야 하는지 모르겠습니다.
    방법이 있다면 꼭 알려주십시오.  

    답변기다리겠습니다.

    감사합니다.

    #32274

    codingapple
    키 마스터

    크롬콘솔창 에러같은걸 살펴봐야합니다 

     

    아니면 구글클라우드는 스케일링이 자동이라 여러 컴퓨터로 get post 분산처리를 해주는데 

    그래서 회원로그인 인증도 랜덤으로 되고 그럴 수 있는데 

    인증이 풀리는 문제면 세션데이터를 메모리가 아니라 db같은 곳에 저장하면 해결될텐데 세션을 mongodb에 저장하는 방법을 찾아보거나 

    https://github.com/googleapis/nodejs-datastore-session 이런거 쓰면 좀 쉽게 구현가능합니다 

    #32374

    최요환
    참가자

    감사합니다. 말씀하신부분쪽으로 하려고 구글검색도 해보고 

    server.js 에서 몇가지 추가만 하면 되는 것인가요?  아니면 삭제할부분이 있는건지 또는 다른 js에도 작업을 해야하는 건지 궁금합니다.

     

     

    터미널에서 

    npm i connect-mongo  실행하고

     

    npm install mongoose

    npm install mongoose-session

    npm install @google-cloud/connect-datastore

    여러가지 설치하긴 했는데, 뭐가뭔지 모르겠습니다.

     

    일단, server.js에 아랫것들 추가했고요

    const MongoStore = require('connect-mongo')

    const mongoose = require('mongoose');
     

    "app.use(session({"   아래쪽에 "store:~~~" 추가했고요.
    store: new MongoStore({ mongooseConnection: mongoose.connection })

     

    아래처럼 에러가 나니... 여기서 더 어떻게 해야하는지 모르겠네요ㅠ 

    Assertion failed: You must provide either mongoUrl|clientPromise|client
    in options
    C:\파이썬\Tx-NodeJs\node_modules\connect-mongo\build\main\lib\MongoStore.js:119
    throw new Error('Cannot init client. Please provide correct
    options');
    ^

    Error: Cannot init client. Please provide correct options
    at new MongoStore (C:\파이썬\Tx-NodeJs\node_modules\connect-mongo\build\main\lib\MongoStore.js:119:19)
    at Object.<anonymous> (C:\파이썬\Tx-NodeJs\server.js:35:10)
    at Module._compile (node:internal/modules/cjs/loader:1099:14)
    at Object.Module._extensions..js (node:internal/modules/cjs/loader:1153:10)
    at Module.load (node:internal/modules/cjs/loader:975:32)
    at Function.Module._load (node:internal/modules/cjs/loader:822:12)
    at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:77:12)
    at node:internal/main/run_main_module:17:47

    Node.js v17.9.0
    [nodemon] app crashed - waiting for file changes before starting...

     

     

    다른 곳에서는 

    store: MongoStore.create(options), 로 하라고도 하는데

    options이 정의되지 않았다고 에러가 나고요.

     

     

    결론 : 

    "세션데이터를 mongodb에 저장하는 방법" 구체적으로 알고 싶습니다.

    구글검색으로 어떻게든 해보려 하는데,

    실력이 미천한지라..

    어떻게 해야하는 되는건지 알수가없어 막막하네요ㅠ

    #32375

    최요환
    참가자

    그리고 말씀해주신

    "https://github.com/googleapis/nodejs-datastore-session 이런거 쓰면 좀 쉽게 구현가능합니다 "

    을 참고하여

    server.js에서 아래 추가했고요.

    const {Datastore} = require('@google-cloud/datastore');
    const {DatastoreStore} = require('@google-cloud/connect-datastore');

     

    파란 부분도 추가하려고 하니

     

    기존 것과 중복되는 것 같아서요

    해당부분 삭제하고  깃허브의 파란부분(위)을 삽입하였습니다.

     

    실행하니  

    이렇게 나오고요

     

    http://localhost:8080/  접속하면

    이런 에러가 나옵니다.

     

    이제 어떻게 해야하나요?

    #32389

    codingapple
    키 마스터

    복붙식으로 하면 되는건아니라 지금했던 github링크랑 mongoose 어쩌구는 버리고 

    connect-mongo 아니면 connect-mongodb-session 사용법 찾아서 따라해봅시다 

5 글 보임 - 1 에서 5 까지 (총 5 중에서)
  • 답변은 로그인 후 가능합니다.

About

현재 월 700명 신규수강중입니다.

  (09:00~20:00) 빠른 상담은 카톡 플러스친구 코딩애플 (링크)
  admin@codingapple.com
  이용약관
ⓒ Codingapple, 강의 예제, 영상 복제 금지
top

© Codingapple, All rights reserved. 슈퍼로켓 에듀케이션 / 서울특별시 강동구 고덕로 19길 30 / 사업자등록번호 : 212-26-14752 온라인 교육학원업 / 통신판매업신고번호 : 제 2017-서울강동-0002 호 / 개인정보관리자 : 박종흠