socket.io, svelte 및 node를 사용하여 멀티플레이어 영화 퀴즈/퀴즈 게임을 만들어 봅시다. 데블로그 #1
뒷이야기
redishackathon으로 정신이 산만해지기 전에 저는 영화 퀴즈/퀴즈 멀티플레이어 게임을 만드는 것에 대해 생각하고 있었습니다. 내가 시작한 유일한 것은 인터페이스가 작동하는 방식에 대한 몇 가지 실험을 하는 것이었습니다.
간략한 개요
아이디어는 themoviedb 또는 이와 유사한 API에서 데이터를 가져오고 다음과 같은 질문을 기반으로 하는 것입니다.
인터페이스는 기본적으로 동영상 표지가 있는 이미지 행이며 마우스를 사용하여 순위를 매길 때 드래그하거나 하나를 선택할 때 선택할 수 있습니다. 모바일에서도 작업해야 합니다.
스택
프런트엔드: 날렵한
백엔드: 노드
통신: Socket.io
나중에 구현하는 기능에 따라 redis/mongodb를 추가할 수 있습니다.
계획
나는 계획을 세우는 데 좀 서툴러서 지금은 계획이 없는 것처럼 그냥 바로 코딩하고 기본 작업이 작동하게 되면 나중에 약간의 계획을 세웁니다.
일하러 가다
이 devlogs는 각 명령 등을 보여주는 매우 상세하지 않습니다.
백엔드
그런 다음 새 노드 서버를 만들고 express 및 socket.io를 설치하십시오.
기본적인 내용이므로 자세히 다루지는 않겠습니다.
이제 서버를 설정합니다. 개발할 때 다른 포트에서 서버와 클라이언트를 실행하므로 cors를 사용해야 합니다.
index.js
const express = require('express');
const app = express();
const http = require('http');
const server = http.createServer(app);
const { Server } = require('socket.io');
const path = require('path');
//dev shite with cors support.. remember to change this later
const io = new Server(server, {
cors: {
origin: ['http://localhost:5173', 'http://localhost:5174'],
credentials: true,
},
});
require('./eventHandler.js')(io);
app.use(express.static(path.join(__dirname, 'public'))); //serve static files from the public folder so can run frontend on the same server
server.listen(3000, () => {
console.log('listening on *:3000');
});
module.exports = io;
보시다시피 eventHandler 파일에 필요합니다. 이것은 모든 socket.io 정크가 가는 곳입니다. 물건이 너무 어수선해지지 않도록 분리된 상태로 유지하고 싶기 때문입니다.
eventHandler.js
module.exports = function (io) {
io.on('connection', function (socket) {
const count = io.engine.clientsCount;
console.log(socket.id + ' connected c:' + count);
socket.on('disconnect', () => {
console.log(socket.id + ' disconnected');
});
});
io.engine.on('connection_error', (err) => {
console.log(err.req); // the request object
console.log(err.code); // the error code, for example 1
console.log(err.message); // the error message, for example "Session ID unknown"
console.log(err.context); // some additional error context
});
};
현재 이 파일에는 일부 콘솔 로그만 포함되어 있으므로 어떤 일이 발생하는지 확인하고 통신이 작동하는지 확인하십시오.
프런트엔드
새 svelte 앱을 초기화하는 것으로 시작합니다.
npm create vite@latest client
socket-io.client 설치
npm install socket-io.client
App.svelte에서 모든 것을 삭제하고 일부 코드를 삽입하십시오.
<script>
import { io } from 'socket.io-client';
let connected = '';
const socket = io('http://localhost:3000');
socket.on('connect', () => {
connected = 'We got a signal!';
});
</script>
<main>
<h1>{connected}</h1>
</main>
완료!
일부 개발 서버를 시작하고 제대로 작동하는지 확인하세요!
빵! 작동합니다. 또한 연결 및 연결 해제 시 노드에서 console.logs를 가져오므로 좋습니다.
지금은 뒹굴뒹굴.. 지금 자야지..! 계속하려면..
Reference
이 문제에 관하여(socket.io, svelte 및 node를 사용하여 멀티플레이어 영화 퀴즈/퀴즈 게임을 만들어 봅시다. 데블로그 #1), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/zoppatorsk/lets-build-a-multiplayer-movie-triviaquiz-game-with-socketsio-svelte-and-node-devlog-1-17pn텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)