반응형
1편: https://kronae.com/entry/Nodejs-소켓으로-통신하기-1편
하지만 아직 부족한 게 남아있습니다.
지금은 연결 되었을 때에만 통신을 하지만, 정말 제대로 통신을 하려면
메시지를 주고 받을 수 있어야 합니다.
1. readline 모듈
readline 모듈은 콘솔에 입력한 글자를 받아올 때 사용합니다.
이 모듈은 nodejs 를 설치하면 기본적으로 같이 설치되는 모듈이기 때문에
socket.io 같이 별도의 설치가 필요하지 않습니다.
2. 실습 - 1
그럼 readline 모듈을 이용해 글자를 받아 볼까요?
socketServer.js 와 socketClient.js의 윗쪽에 다음과 같은 코드를 추가합니다.
const readline = require("readline");
그 다음 아래의 코드를 추가해서 readline 인터페이스를 만듭니다. (모든 파일에)
var readlineInterface = readline.createInterface({
"input": process.stdin
});
이대로 실행하면 글자를 적을 수 있지만, 엔터를 눌렀을 때 아무 반응이 없습니다.
각 파일에 다음과 같은 코드를 추가하면(서버파일에서는 connection 안에, 클라이언트파일에서는 마지막에 적습니다)
readlineInterface.on("line", function(answer) {
socket.emit("msg", answer);
});
아! 그리고, 서버파일 connection 안에, 다음과 같은 코드도 작성해야 합니다.
socket.on("msg", function(data) {
console.log("MSG:", data);
});
이제 완성입니다.
완성된 코드:
// socketServer.js
const http = require("http");
const socketIo = require("socket.io");
const readline = require("readline");
const app = http.createServer();
const io = socketIo(app, {"cors": { "origin": "*" }});
var readlineInterface = readline.createInterface({
"input": process.stdin
});
app.listen(4000, function() {
console.log("Started the server.");
});
io.on("connection", function(socket) {
console.log("소켓 연결됨:", socket.id);
socket.emit("msg", "Connected!");
socket.on("msg", function(data) {
console.log("MSG:", data);
});
readlineInterface.on("line", function(answer) {
socket.emit("msg", answer);
});
});
// socketClient.js
const socketIo = require("socket.io-client");
const readline = require("readline");
var readlineInterface = readline.createInterface({
"input": process.stdin
});
var socket = new socketIo("http://localhost:4000");
socket.on("msg", function(data) {
console.log("MSG:", data);
});
readlineInterface.on("line", function(answer) {
socket.emit("msg", answer);
});
이제 실행해 보면,
메시지를 주고 받을 수 있게 되었습니다.
지금까지, 소켓으로 통신하기 였는데요,
유익하셨다면 공감 많이많이 눌러주시면 감사하겠습니다.
이상 크로네였습니다.
반응형
'코딩' 카테고리의 다른 글
[코딩] 코딩 언어들의 주석 (0) | 2022.11.04 |
---|---|
[마인크래프트] 서버 플러그인 만들기 1편 (0) | 2022.10.30 |
[Node.js] 소켓으로 통신하기 1편 (0) | 2022.10.25 |
[Node.js] 웹 서버 만들기 3편 (0) | 2022.10.19 |
[Node.js] 웹 서버 만들기 2편 (0) | 2022.10.19 |
댓글