Skip to content

Commit a5ddb55

Browse files
authored
Merge pull request #15 from minzero31/jimini
socket 통신#8
2 parents ce2850b + 3c7a51c commit a5ddb55

File tree

5 files changed

+138
-4
lines changed

5 files changed

+138
-4
lines changed

package-lock.json

Lines changed: 80 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
"react-dom": "^18.3.1",
1212
"react-router-dom": "^6.24.1",
1313
"react-scripts": "5.0.1",
14+
"socket.io-client": "^4.7.5",
1415
"web-vitals": "^2.1.4"
1516
},
1617
"scripts": {

src/img/computer.png

61.3 KB
Loading

src/page/Main.js

Lines changed: 40 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,50 @@
1-
import React, { useState } from "react";
1+
import React, { useEffect, useState } from "react";
22
import Modal from "./Modal";
3+
import computer from "../img/computer.png";
4+
import io from "socket.io-client";
5+
6+
const socket = io("http://172.10.7.127");
37

48
const Main = () => {
9+
const [bombHolder, setBombHolder] = useState(null);
510
const [isModalOn, setIsModalOn] = useState(true);
11+
12+
useEffect(() => {
13+
socket.on("connect", () => {
14+
console.log("Connected to server");
15+
});
16+
17+
socket.on("bomb", (bombHolderId) => {
18+
setBombHolder(bombHolderId);
19+
console.log("Bomb is with: ", bombHolderId);
20+
});
21+
22+
return () => {
23+
socket.off("connect");
24+
socket.off("bomb");
25+
};
26+
}, []);
27+
28+
const passBomb = () => {
29+
setBombHolder("other");
30+
socket.emit("pass_bomb");
31+
console.log("Bomb is passed to the other player!");
32+
};
33+
634
return (
735
<div style={{ backgroundColor: "yellow", height: "100vh" }}>
836
<div>Main</div>
37+
<div>
38+
{bombHolder === socket.id ? <div>내 차례</div> : <div>네 차례</div>}
39+
</div>
40+
<div>
41+
<div>
42+
<img style={{ width: "280px" }} onClick={passBomb} src={computer} />
43+
</div>
44+
<div>
45+
<img style={{ width: "280px" }} onClick={passBomb} src={computer} />
46+
</div>
47+
</div>
948
{isModalOn ? (
1049
<div
1150
style={{

src/page/Modal.js

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -51,9 +51,23 @@ const Modal = ({ state }) => {
5151
/>
5252
</div>
5353
{countDown ? (
54-
<div style={{ display: "flex" }}>
55-
<div>{countDown}</div>
56-
<div>s</div>
54+
<div
55+
style={{
56+
display: "flex",
57+
flexDirection: "column",
58+
alignItems: "center",
59+
fontSize: "18px",
60+
flexGrow: 0.7,
61+
justifyContent: "center",
62+
fontWeight: "bold",
63+
gap: "20px",
64+
}}
65+
>
66+
<div>게임이 시작됩니다.</div>
67+
<div>
68+
{countDown}
69+
<b>s</b>
70+
</div>
5771
</div>
5872
) : (
5973
<div

0 commit comments

Comments
 (0)