Closed ttrrrrrddd closed 1 year ago
in_kkutu.min.js
오류PageHead
mixin에서 자동으로 스크립트를 페이지에 삽입하는 과정에서 in_kkutu.min.js
파일을 찾지 못해 발생합니다.
in_kkutu.min.js
파일은 Grunt가 생성하지 않으며, 끄투 프론트엔드 구성 요소가 아니므로 해당 오류가 발생하더라도 끄투 동작에는 문제가 없습니다.
그럼에도 불구하고 해결하고 싶다면
module.pug
파일의 118번째 줄을 다음과 같이 수정합니다.
- var pageName = locals.page.replace("/", "_");
- if(pageName !== "kkutu")
script(type='text/javascript', src='/js/in_'+pageName+'.min.js')
locals.page
에 지금은 의미가 없는 .replace("/", "_")
가 붙어있다는 점, Grunt로 minify된 인게임 소스코드 이름이 in_game_kkutu.min.js
라는 점, 끄투는 쪼롤에 속한 게임 서비스 중 하나였다는 점을 고려해보면 끄투를 오픈소스로 공개하기 위해 쪼롤에서 분리하는 과정에서 생긴 잔재라고 생각해볼 수 있습니다.
또한 ko_KR.json
에는 쪼롤의 것으로 추정되는 데이터들이 남아있으며 game/fates
키가 존재하는데 이는 끄투를 오픈소스로 공개하기 위해 쪼롤에서 끄투를 분리하는 과정에서 생긴 잔재입니다. 지금의 ko_KR.json
의 kkutu
키는 당시에 game/kkutu
였을 것입니다.
초기 쪼롤 서버 코드는 다음과 같았을 것입니다.
Server.get(..., function(req, res){
// ...
// webinit.js에서 ko_KR.json의 'game/kkutu' 객체를 window.L로 보냄.
// module.pug에서 "in_" + "game/kkutu".replace("/", "_") + ".min.js"를 로드하게 함.
page(req, res, "game/kkutu");
});
Server.get(..., function(req, res){
// ...
// webinit.js에서 ko_KR.json의 'game/fates' 객체를 window.L로 보냄.
// module.pug에서 "in_" + "game/fates".replace("/", "_") + ".min.js"를 로드하게 함.
page(req, res, "game/fates");
});
하지만 끄투를 오픈소스로 공개하기 위해 쪼롤에서 분리하는 과정에서
ko_KR.json
의 game/kkutu
키는 kkutu
로, main.js
의 page(req, res, "game/kkutu");
는 page(req, res, "kkutu");
로 바뀌었습니다.
그로 인해 PageHead
mixin은 더 이상 in_game_kkutu.min.js
, in_game_kkutu.css
를 로드하지 않고 엉뚱한 존재하지도 않는 in_kkutu.min.js
파일을 로드하게 된 것입니다.
그래서 끄투 오픈소스 공개 당시 쪼리핑님께서 in_game_kkutu.min.js
는 kkutu.pug
에서 직접 로드하도록 수정하신 것 같습니다. in_kkutu.css
는 in_game_kkutu.css
파일을 복사하여 이름만 바꾸었던 것으로 보이고 두 파일의 내용이 약간 다른 것은 PR 등을 거치면서 달라진 것이라고 생각합니다.
(그래서 in_game_kkutu.css
는 이름이 무색하게 인게임 페이지에서는 사용되지 않고 portal.pug
에서 쓰고 있습니다)
불러오는 중...앞으로 1
에서 멈추는 문제웹 소켓과 연결하지 못하고 있습니다.
불러오는 중 화면에서 조금 더 기다리면 ERR_CONNECTION_TIMED_OUT
오류가 개발자 도구 콘솔에 출력될 확률이 높습니다.
원인으로는 여러가지가 있겠습니다.
구름IDE 서비스를 사용하고 계신 것으로 보이므로 아래 경우 중 하나일 것이라고 생각합니다.
개발자 도구 창에서 조금 기다려보니 이런 오류가 나왔습니다.
Mixed Content: The page at 'https://drkkutu.run.goorm.io/?server=0' was loaded over HTTPS, but attempted to connect to the insecure WebSocket endpoint 'ws://drkkutu.run.goorm.io:2083/UuWcxgSx4OUb3U7Do1gZ0BCP7xN1bvHu'. This request has been blocked; this endpoint must be available over WSS.
Uncaught DOMException: Failed to construct 'WebSocket': An insecure WebSocket connection may not be initiated from a page loaded over HTTPS. at h (https://drkkutu.run.goorm.io/js/in_game_kkutu.min.js:21:31262) at Object.success (https://drkkutu.run.goorm.io/js/in_game_kkutu.min.js:21:16650) at f (https://drkkutu.run.goorm.io/js/jquery.js:19:18299) at Object.fireWith [as resolveWith] (https://drkkutu.run.goorm.io/js/jquery.js:19:19085) at r (https://drkkutu.run.goorm.io/js/jquery.js:21:16009) at XMLHttpRequest.r (https://drkkutu.run.goorm.io/js/jquery.js:21:21631)
웹서버는 https를 사용하지만 게임서버가 wss가 아닌 ws를 사용하고 있는것 같습니다. 보안 연결 관련 설정을 진행해주셔야합니다.
구름IDE에서 인증서가 보이지 않습니다 ㅠㅡㅠ (부계정 입니다)
구름IDE에 의해 유저는 구름IDE 서버와 보안 연결을 하고 있지만 끄투 웹 서버에서 클라이언트에게 게임 채널과 웹 소켓 통신 시 보안 연결하지 않도록 PROTOCOL
값을 잘못 전달하고 있습니다.
게임 채널 포트가 2083으로 설정되어 있는 것으로 보아(2083은 클라우드플레어가 포워딩하는 포트이고 구름IDE가 2083 포트를 포워딩하는지는 확인이 필요하지만) 이미 #871 은 확인하신 것 같은데 global.json
파일에서 WAF를 사용하도록 설정하셨나요?
아니요. 사용하지 않게 했습니다. 실외라 집에가서 시도해보겠습니다.
가서 SSL 모두 수정 하고 서버를 실행 했더니 이런 오류가 뜨며 켜지지 않습니다. (게임 서버) root@goorm:/workspace/KKUTU/KKuTu/Server(master)# node lib/Game/cluster.js 0 1 [2022-10-11 08:50:07] Error from Redis: Error: Redis connection to 127.0.0.1:6379 failed - connect ECONNREFUSED 127.0.0.1:6379 [2022-10-11 08:50:07] Run with no-redis mode. [2022-10-11 08:50:07] << KKuTu Server:null >> [2022-10-11 08:50:07] Master DB is ready. [2022-10-11 08:50:08] Error from Redis: Error: Redis connection to 127.0.0.1:6379 failed - connect ECONNREFUSED 127.0.0.1:6379 [2022-10-11 08:50:08] Run with no-redis mode. [2022-10-11 08:50:08] DB is ready. ^C (웹 서버) root@goorm:/workspace/KKUTU/KKuTu/Server(master)# node lib/Web/cluster.js 1 [2022-10-11 08:50:11] << KKuTu Web >> [2022-10-11 08:50:12] OAuth Strategy daldalso is not loaded [2022-10-11 08:50:12] OAuth2Strategy requires a clientID option [2022-10-11 08:50:12] OAuth Strategy naver is not loaded [2022-10-11 08:50:12] OAuth2Strategy requires a clientID option [2022-10-11 08:50:12] OAuth Strategy facebook is not loaded [2022-10-11 08:50:12] OAuth2Strategy requires a clientID option [2022-10-11 08:50:12] OAuth Strategy google is not loaded [2022-10-11 08:50:12] OAuth2Strategy requires a clientID option [2022-10-11 08:50:12] OAuth Strategy twitter is not loaded [2022-10-11 08:50:12] OAuthStrategy requires a consumerKey option [2022-10-11 08:50:12] OAuth Strategy kakao is not loaded [2022-10-11 08:50:12] OAuth2Strategy requires a clientID option [2022-10-11 08:50:12] OAuth Strategy discord is not loaded [2022-10-11 08:50:12] OAuth2Strategy requires a clientID option [2022-10-11 08:50:12] OAuth Strategy twitch is not loaded [2022-10-11 08:50:12] OAuth2Strategy requires a clientID option [2022-10-11 08:50:12] OAuth Strategy github is not loaded [2022-10-11 08:50:12] OAuth2Strategy requires a clientID option [2022-10-11 08:50:12] OAuth Strategy line is not loaded [2022-10-11 08:50:12] OAuth2Strategy requires a clientID option [2022-10-11 08:50:12] OAuth Strategy instagram is not loaded [2022-10-11 08:50:12] OAuth2Strategy requires a clientID option [2022-10-11 08:50:12] OAuth Strategy spotify is not loaded [2022-10-11 08:50:12] OAuth2Strategy requires a clientID option [2022-10-11 08:50:12] Error from Redis: Error: Redis connection to 127.0.0.1:6379 failed - connect ECONNREFUSED 127.0.0.1:6379 [2022-10-11 08:50:12] Run with no-redis mode. [2022-10-11 08:50:12] Game server #1 has an error: Error: write EPROTO 140330403977088:error:1408F10B:SSL routines:ssl3_get_record:wrong version number:../deps/openssl/openssl/ssl/recor d/ssl3_record.c:332:
[2022-10-11 08:50:12] Game server #1 closed: 1006 [2022-10-11 08:50:12] DB is ready. ^C
SSL 버전 오류, OAuth 미사용 컨픽까지 불러옴, 레디스 없음..
죄송합니다. SSL은 잘 다루지 못해서요..
해결 되었습니다. 구름IDE가 포트를 직접 포워딩해주지 않아서 프록시로 우회하여 웹 소켓과 연결하였습니다.
해결 되었습니다. 이슈 닫겠습니다. 도와주신 분들 정말 감사합니다.
제목그대로 입니다. 게임 서버, 웹서버는 정상작동 하는데 들어가보면 앞으로 1 에서 멈춥니다. F12 키 눌러서 확인 해 보았더니 in_kkutu.min.js:1 Failed to load resource: the server responded with a status of 404 (Not Found) drkkutu.run.goorm.io/:1
이런 오류가 있었습니다. 제 힘으론 도저히 해결을 못하겠습니다. 도와주세요.