<알아둘 것>
판넬소켓 연결 주소 : ws://j8d2101.p.ssafy.io:8080/panelSocket
(판넬뒤집기 산책을 시작할 때 연결하시면 됩니다)
보물소켓 연결 주소 : ws://j8d2101.p.ssafy.io:8080/treasureSocket
(얘도 보물찾는 산책을 시작할 때 연결하시면 되요!)
보내는 값 : (String) json을 Stringify해서 보내주세요!
받는 값 : (String) json을 Stringify해서 보내줘요!
보내는 값의 형식
<보낼값>
{
event: 이벤트 코드를 적어주세요
data: {
보낼 데이터를 json형식으로 담아 주세요
}
}
<예시>
JSON.stringify({
event: "access",
data: {
challengeId: 1,
loginId: "[email protected]"
}
}
받는 값의 형식
<받는사람>
1. 자기 자신일 수도 있고
2. 같은 방에 사람일 수 있음
<받을값>
{
code: 이벤트 코드를 적어주세요
value: {
받을 데이터가 json형식으로 담겨져 와요
}
}
<예시>
JSON.stringify({
code: "access",
value: {
challengeId: 1,
loginId: "[email protected]"
}
}
<판넬 뒤집기>
산책시작하기
산책을 시작한 사람이 보낼 값
JSON.stringify({
event: "access",
data: {
challengeId: 1,
loginId: "[email protected]"
}
})
받을 값
<받는 사람>
나 자신
{
code : "access"
value : {
mapInfo : (200) [Array(200), Array(200), Array(200), Array(200), Array(200), Array(200), Array(200), Array(200), Array(200), Array(200), Array(200), Array(200), Array(200), Array(200), Array(200), Array(200), Array(200), Array(200), Array(200), Array(200), Array(200), Array(200), Array(200), Array(200), Array(200), Array(200), Array(200), Array(200), Array(200), Array(200), Array(200), Array(200), Array(200), Array(200), Array(200), Array(200), Array(200), Array(200), Array(200), Array(200), Array(200), Array(200), Array(200), Array(200), Array(200), Array(200), Array(200), Array(200), Array(200), Array(200), Array(200), Array(200), Array(200), Array(200), Array(200), Array(200), Array(200), Array(200), Array(200), Array(200), Array(200), Array(200), Array(200), Array(200), Array(200), Array(200), Array(200), Array(200), Array(200), Array(200), Array(200), Array(200), Array(200), Array(200), Array(200), Array(200), Array(200), Array(200), Array(200), Array(200), Array(200), Array(200), Array(200), Array(200), Array(200), Array(200), Array(200), Array(200), Array(200), Array(200), Array(200), Array(200), Array(200), Array(200), Array(200), Array(200), Array(200), Array(200), Array(200), Array(200), …]
rankInfo : [
{
panelCount : 0
teamId : 1
teamRank : 1 // 판넬 카운트가 같으면 같은 랭킹이에요
(예시) 1등(3개) 1등(3개) 3등(2개)
},
{
panelCount : 0
teamId : 2
teamRank : 1
}
]
}
}
누군가가 판넬을 뒤집음
판넬 뒤집은 사람이 보낼 값
JSON.stringify({
event: "signaling",
data: {
lat: 36.0001,
lng: 127.0001,
challengeId: 1,
loginId: "[email protected]"
}
})
받을 값
<받는 사람>
같은 방에 있는 모두
<받는 값> 스트링화 된 json이 와요
{
code:"signaling"
value: {
indexC: 100
indexR: 99,
rankInfo: [
loginId: [email protected]
name: 잉동하
profile: 사진주소
teamRank: 1
indiRank: 1 //개인전 : teamRank == indiRank , 팀전 : teamRank = 1 or 2 , indiRank 개인 등수
teamId: 1
point: 1
]
teamId: 1
teamDraw: false
[}
}](<https://tame-soarer-696.notion.site/Api-315f4c7e86c94cda9cfe7082cb0c5969>)
게임 중 정보 불러오기<deprecated>
정보를 보고 싶은 사람이 보낼 값
JSON.stringify({
event: "signaling",
data: {
lat: 36.0001,
lng: 127.0001,
challengeId: 1,
loginId: "[email protected]"
}
})
받을 값
<받는 사람>
자기 자신
<받는 값> 스트링화 된 json이 와요
{
code: "getInfo"
value: {
endDate: "2023-03-29"
entryFee: 10
gameType: 1
rankInfo: [
{
teamId: 1,
teamRank: 1,
panelCount: 1
},
{
teamId: 2,
teamRank: 2,
panelCount: 0
}
]
startDate: "2023-03-27"
}
}
<보물 찾기>
산책을 시작해요
산책을 시작할 때 보내면 되는 값
JSON.stringify({
event: "access",
data: {
challengeId: 1
}
})
받을 값
<받는사람>
자기자신
<받는 값>
{
code: "access",
value: {
rankInfo: [
{
teamid: 1,
point: 0,
teamRank: 1,
loginId: "[email protected]"
},
{
teamid: 2,
point: 0,
teamRank: 1,
loginId: "[email protected]"
}
...
],
treasureInfo: [
{
idx: 0,
lat: 35.99943659009007,
lng: 127.00500359933517,
point: -1, // 포인트는 -10 ~ 20사이 랜덤값이에요
isOpened: false, // 누군가가 연 보물인지를 나타내요
inPocket: false, // 누군가가 산책중인 현재 보물을 주웠는지를 나타내요
// 보물상자가 오픈되지 않고 누군가가 산책중에 줍지 않은 경우만 다른사람이 주울 수 있어요
type: true // 타입이 true면 보물이고 false면 폭탄이에요
},
{
idx: 1,
lat: 35.99943659009007,
lng: 127.00500359933517,
point: null, // type의 value가 false면 point는 null이에요
isOpened: false,
inPocket: false,
type: false // 타입이 true면 보물이고 false면 폭탄이에요
},
...
]
}
}
누군가가 보물을 주웠어요
보물을 주은 사람이 보낼 값
JSON.stringify({
event: "signaling",
data: {
challengeId: 1,
treasureIdx: 1 // 산책을 시작하면 받는 값의 보물 배열에는 idx가 있어요
// loginId는 안줘도 되요. 이 이벤트는 해당 챌린지의 보물이 다른 누군가에 의해 주워 졌으므로 더이상 주울 수 없음을 다른 사람들에게 알리기 위함입니다.
// 클라이언트가 주운 보물 정보는 프론트에서 관리하고 있다가 후에 산책이 종료되고 획득할 보물을 유저가 결정한 후에 socket이 아닌 http request를 통해 알려주세요
}
})
받을 값
<받는사람>
같은 방의 모든 사람
<받는 값>
{
code: "signaling",
value: {
treasureInfo: [
{
idx: 0,
inPocket: false,
isOpened: false,
lat: 36.00007670365224,
lng: 127.00106009405691,
point: 1,
type: true,
},
{
idx: 1,
inPocket: false,
isOpened: false,
lat: 36.00007670365224,
lng: 127.00106009405691,
point: 1,
type: true,
},
...
]
}
}
획득할 보물 선택을 완료했어요
보물 선택을 완료한 클라이언트가 보낼 값
conn.send(JSON.stringify({
event: "selecting",
data: {
selectList: [1,2,3], // 선택한 보물을 모두 모아서 한번에 보내주세요
loginId: "[email protected]",
challengeId: 12
}
})
받을 값
<받는사람>
같은 방의 모든 사람
<받는 값>
{
code: "selecting",
value: {
treasureInfo: [
{
idx: 0,
inPocket: false,
isOpened: false,
lat: 36.00007670365224,
lng: 127.00106009405691,
point: 1,
type: true,
},
{
idx: 1,
inPocket: false,
isOpened: false,
lat: 36.00007670365224,
lng: 127.00106009405691,
point: 1,
type: true,
},
...
],
rankInfo: [
{
teamid: 1,
point: 15,
teamRank: 1,
loginId: "[email protected]"
},
{
teamid: 2,
point: 0,
teamRank: 2,
loginId: "[email protected]"
}
...
]
}
}