- 전체
- 명
- 오늘 찾아주신 분
- 명
HTML5 에서 WebSocket 이라는 개념이 나온 이후로 브라우저와 서버 사이에 소켓통신이 쉽게 이루어지게 되었는데, 이 부분은 꽤나 오래된 이야기라 패스하도록 한다.
서버환경이 일반 http 가 지원되는 환경에서 사용하게 되면 클라이언트와 소켓서버 연결을 아주 쉽게 구축할 수 있지만 SSL 이 적용된 서버라면 추가적인 옵션이 필요하다. 왜냐하면 SSL 을 적용한 것이 웹 서버에 브라우저에 접근하는 것을 적용을 한 것이지 소켓에 적용한 것은 아니기 때문이다. 그래서 에러를 발생시키는데, https 환경에서 http 데이터(예를 들어, 이미지 같은거) 를 불러오는 경우에 콘솔에는 Mixed Content 라고 써있는 에러를 밷는 것과 같은 느낌의 에러를 볼 수 있다.
그렇다면 https 환경에서 소켓서버와 연결하려면 어떻게 해야하는가에 대해서 빠르게 알아보도록 하겠다.
먼저, 서버에서 사용하고 있는 SSL 인증서의 위치를 알아본다.
보통의 Linux 서버에서는 '/etc/pki' 위치에 인증서를 넣거나 하는데 그건 서버마다 SSL 을 두었던 위치가 다르니 잘 찾아보길 바란다. 정 모르겠다 싶으면 Apache 나 Nginx 의 설정파일을 보면 찾을 수 있지 않을까 싶다.
인증서에는 "비공개 키" 와 "인증서 키" 그 외에 "체인 키" 들을 사용하게 되는데, 여기서는 "비공개 키" 와 "인증서 키" 를 사용한다.
다음, 비공개 키와 인증서 키의 위치를 알게 되었다면 소스를 작성해보도록 한다.
const fs = require('fs');
const cert = fs.readFileSync(${KEY_CERTIFICATE})
const key = fs.readFileSync(${KEY_PRIVATE})
단순하게 Node.js 의 fs 모듈을 통해 "인증서 키"와 "비공개 키"를 읽었다. 그 다음에 서버 정보 생성에 필요한 https 모듈을 초기화 할 때 위에서 불러왔던 "인증서 키" 와 "비공개 키" 를 전달한다.
마지막으로, Socket.io 라이브러리를 이용하여 편하게 WebSocket 을 구축하면 완료.
// ... 위에 로직
const server = require('https').createServer({ cert: cert, key: key })
const io = require('socket.io')(server);
io.on("connection", (client) => {
// ...Codes
})
[Vue.js] 동적 컴포넌트에 이벤트 전달하기 (0) | 2022.05.04 |
---|---|
[Laravel/Vue.js] Laravel Valet 환경에서 BrowserSync 초간단 설정하기 (1) | 2022.04.22 |
[Vue.js] Root Component 에 Prop 전달하기 (0) | 2022.04.20 |
[Node.js] 파일 비교하여 같은 파일인 지 확인하기 (0) | 2022.04.06 |
[Linux] Node.js 다른 방식으로 설치하기(무설치) (0) | 2022.03.14 |