-
글쓴이글
-
2022년 4월 21일 15:12 #32238
최요환참가자nodejs, mongoDB
강의내용 모두 숙지하고
적용해서 나만의 사이트를 만들어보고 있는데요.
일단, localhost:8080 에서는 모든 것이 다 잘 됩니다.
그런데, 구글클라우드로 사이트를 배포해서 다른 기기에서 접속해서 문제없이 잘 되기만 하면 되는 상황인데요.
다른 모든 기능은 구글클라우드로 구현해도 다 잘 되는데, 실시간 채팅기능만 안됩니다.
같은 pc에서 따로 로그인하여 채팅할때는 안되거나 되기는 되더라도, 메시지가 너무 늦게 뜨기도 합니다. 1분 남짓기다려야 합니다.
다른pc끼리 혹은 스마트폰으로 접속해서 채팅하면 메시지가 아예 안나오네요.
채팅메시지를 입력하면 아무 반응이 없지만,
mongoDB에는 입력한 채팅메시지가 들어가 있습니다.
여기서 더 어떻게 진행해야 하는지 모르겠습니다.
방법이 있다면 꼭 알려주십시오.답변기다리겠습니다.
감사합니다.
2022년 4월 21일 20:41 #32274
codingapple키 마스터크롬콘솔창 에러같은걸 살펴봐야합니다
아니면 구글클라우드는 스케일링이 자동이라 여러 컴퓨터로 get post 분산처리를 해주는데
그래서 회원로그인 인증도 랜덤으로 되고 그럴 수 있는데
인증이 풀리는 문제면 세션데이터를 메모리가 아니라 db같은 곳에 저장하면 해결될텐데 세션을 mongodb에 저장하는 방법을 찾아보거나
https://github.com/googleapis/nodejs-datastore-session 이런거 쓰면 좀 쉽게 구현가능합니다
2022년 4월 23일 16:13 #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:47Node.js v17.9.0
[nodemon] app crashed - waiting for file changes before starting...다른 곳에서는
store: MongoStore.create(options), 로 하라고도 하는데
options이 정의되지 않았다고 에러가 나고요.
결론 :
"세션데이터를 mongodb에 저장하는 방법" 구체적으로 알고 싶습니다.
구글검색으로 어떻게든 해보려 하는데,
실력이 미천한지라..
어떻게 해야하는 되는건지 알수가없어 막막하네요ㅠ
2022년 4월 23일 16:33 #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/ 접속하면
이런 에러가 나옵니다.
이제 어떻게 해야하나요?
2022년 4월 23일 22:35 #32389
codingapple키 마스터복붙식으로 하면 되는건아니라 지금했던 github링크랑 mongoose 어쩌구는 버리고
connect-mongo 아니면 connect-mongodb-session 사용법 찾아서 따라해봅시다
-
글쓴이글
- 답변은 로그인 후 가능합니다.