방만들기 클릭 시 uuid를 인자로 임시 링크 생성
임시링크에 들어온 사람들과 지도 내용 공유
naver Map API 사용
현위치 pub : setInterval을 통해 주기적으로 현재위치 produce (@kafka)
같은 링크에 접속한 사용자 위치정보 sub : websocket + spring kafka Consumer (SockJS)
Kafka producing
Kafka Consuming
Websocket
@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig implements WebSocketMessageBrokerConfigurer {
@Override
public void registerStompEndpoints(StompEndpointRegistry registry) {
registry.addEndpoint("/ws/location")
.setAllowedOriginPatterns("*")
.withSockJS();
}
@Override
public void configureMessageBroker(MessageBrokerRegistry registry) {
registry.enableSimpleBroker("/topic");
registry.setApplicationDestinationPrefixes("/app");
}
}
Kafka Set-up
version: '2'
services:
zookeeper:
image: wurstmeister/zookeeper
ports:
- "2181:2181"
kafka:
build: .
ports:
- "9092:9092"
environment:
KAFKA_ADVERTISED_HOST_NAME: 127.0.0.1
KAFKA_CREATE_TOPICS: "whereRU:1:1"
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
volumes:
- /var/run/docker.sock:/var/run/docker.sock
Docker File
FROM adoptopenjdk/openjdk11
CMD ["./mvnw", "clean", "package"]
ARG JAR_FILE_PATH=target/*.jar
COPY ${JAR_FILE_PATH} app.jar
ENTRYPOINT ["java", "-jar", "app.jar"]
# build
# docker build -t spring-where-r-u .
# run
# docker run -it spring-where-r-u
FROM node:16.14.0 as builder
RUN mkdir /usr/src/app
WORKDIR /usr/src/app
ENV PATH /usr/src/app/node_modules/.bin:$PATH
COPY package.json /usr/src/app/package.json
RUN yarn install --silent
# source -> working directory copy
# run
COPY . /usr/src/app/
CMD ["yarn","start"]
# build
# docker build -t react-where-r-u .
# Command
# docker run -it -p 8081:8081 -p 127.0.0.1:8090:8090 react-where-r-u
docker-compose.yml
version: '3.7'
services:
react:
build:
context: ./web/
dockerfile: Dockerfile
image: react
container_name: where-r-u-react
ports:
- "8081:8081"
zookeeper:
image: wurstmeister/zookeeper
ports:
- "2181:2181"
container_name: zookeeper
kafka:
build:
context: ./kafka/
dockerfile: Dockerfile
image: kafka-docker_kafka
container_name: kafka
ports:
- "9092:9092"
environment:
KAFKA_ADVERTISED_HOST_NAME: host.docker.internal
KAFKA_CREATE_TOPICS: "whereRU:1:1"
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
volumes:
- /var/run/docker.sock:/var/run/docker.sock
depends_on:
- zookeeper
spring:
build:
context: ./server/whereRU/
dockerfile: Dockerfile
image: where-ru-spring
container_name: spring
environment:
- spring.kafka.bootstrap-servers=kafka:9092
ports:
- "8090:8090"
depends_on:
- kafka