연결된 모든 클라이언트에게 메시지를 보낼 때, 다음과 같은 두가지 방법을 사용할 수 있다. io.sockets.emit(event, object) 나를 포함한 모든 클라이이언트에게 메시지가 전송된다. socket.broadcast.emit(evnet, object) 나를 제외한 모든 클라이언트에게 메시지가 전송된다. 브로드캐스트를 연습할 때는 클라이언트가 여러개 필요한데, 그냥 크롬에서 여러개 키면, 여러개 켜도, 클라이언트가 하나다. 하나 킬때마다 앞에 소켓이 해제된다. ㅡㅡ;; 그래서 다른 브라우저, 파이어폭스, 엣지, 웨일, 뭐 이런거로 여러 클라이언트를 켰었는데, 크롬의 시크릿 창을 사용하면, 각 탭마다 클라이언트 소켓이 연결되어 보다 쉽게 브로트캐스트 연습을 할 수 있다. io.sockets.e..
소켓은 이벤트를 기반으로 작동한다. 서버측 소켓객체의 예약 이벤트 connect message disconnect reconnect ping join leave 클라이언트측 소켓객체의 예약 이벤트 connect connect_error connect_timeout reconnect, 등 앞에서 connect와 disconnect는 사용해봤다. 이번에는 message 이벤트를 사용해서 클라이언트에게 메시지를 보내본다. 앞서 작성한 app.js 파일에서 connect와 disconnect 사이에 다음과 같은 코드를 넣어준다. app.js io.on('connection', (socket) => { console.log('A user connected'); /////////////////////////////..
https://www.tutorialspoint.com/socket.io/index.htm Socket.IO Tutorial - Tutorialspoint Socket.IO Tutorial Socket.IO enables real-time bidirectional event-based communication. It works on every platform, browser or device, focusing equally on reliability and speed. Socket.IO is built on top of the WebSockets API (Client side) and Node.js. It www.tutorialspoint.com 여기를 참고했음 소켓.IO는 실시간 양방향 이벤트 기반 통..
페이지를 벗어날 때 어떤 이벤트를 실행시킬 때, navigator.sendBeacon() 메서드를 사용하면된다. window.addEventListener("unload", () => { let dummy = new FormData(); dummy.append('data','xxxxxxxxx'); window.navigator.sendBeacon("http://localhost:3000/chat/end",dummy); }, false); 이 메서드를 사용해서 페이지를 나가기 전에 서버로 작은 데이터를 보내주고 싶었다. window.navigator.sendBeacon("경로",데이터); 데이터를 폼객체에 담아서 보내줬다. 페이지를 나가면 샌드비콘은 router.post('/end',controller.e..
지금 내가 만든 게시판 DB의 테이블 구조는 위와 같다. type이 3이면 공지사항. 6이면 교수컬럼 , 8이면 faq. 이런식으로 구분하였다. 나중에 해당 게시판에서 게시판 리스트를 만들 때, DB에서 해당 게시판의 type값과 일치하는 type의 레코드만 불러올 수 있게 만들었다.. 하지만 각각의 게시판을 만들 때마다 type에 따라 다른 게시판 구조를 뿌려줘야해서, 코드가 지저분해졌다. 다음에 게시판을 만들 때에는 먼저 게시판 type에 관한 테이블을 먼저 만들고. 그 다음에 board 그 게시판 key 값을 join 해서 사용해야겠다. url을 아름답게 만드는 것도 필요한데 그럴 때. req.params 를 사용하고. params에 해당하는 값을 배열에 담아서 사용할 수 있다.
app.js const express = require('express'); const app = express(); const nunjuncks = require('nunjucks'); //npm install socket.io const socket = require('socket.io'); //npm install http const http = require('http');//소켓과 연결하기 위해서. http문서를 읽어오기 위해 const server = http.createServer(app); const io = socket(server); app.use(express.static('./node_modules/socket.io/client-dist')) app.set('view engine',..
클라이언트가 서버에게 id와 pw를 보냄. 서버가 id와pw를 DB에서 조회한 다음에 결과가 맞으면 토큰을 생성. 서버는 생성한 토큰을 클라이언트에게 응답을 보내줌. 클라이언트는 토큰을 쿠키에 저장. 이후 클라이언트는 매 요청마다 토큰을 함께 보냄. const express = require('express'); const crypto = require('crypto'); function createToken(){ let header = { "alg": "HS256", "typ": "JWT" } let payload = { "sub": "1234567890", "name": "John Doe", "user":"kkkk123", "iat": 1516239022 } let encodedHeader = Buf..
- Total
- Today
- Yesterday
- 그래프
- 최소공통조상
- MySQL
- 개발자면접
- 다이나믹프로그래밍
- BFS
- 서버개발
- 은둔청년체험
- 면접질문
- create databases;
- 투포인터
- 로드나인
- node.js
- 서버점검
- DB 생성
- create db
- 면접비
- 투포인터 연습
- MOD
- 다이나밍프로그래밍
- 동적프로그래밍
- 롱베케이션
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |