diff --git a/src/main/java/com/thughari/randomchat/config/RateLimitConfig.java b/src/main/java/com/thughari/randomchat/config/RateLimitConfig.java new file mode 100644 index 0000000..d44512c --- /dev/null +++ b/src/main/java/com/thughari/randomchat/config/RateLimitConfig.java @@ -0,0 +1,25 @@ +package com.thughari.randomchat.config; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.socket.server.standard.ServletServerContainerFactoryBean; + +@Configuration +public class RateLimitConfig { + + @Bean + public ServletServerContainerFactoryBean createWebSocketContainer() { + ServletServerContainerFactoryBean container = new ServletServerContainerFactoryBean(); + + // Set maximum message size to 64KB + container.setMaxTextMessageBufferSize(64 * 1024); + + // Set maximum binary message size to 64KB + container.setMaxBinaryMessageBufferSize(64 * 1024); + + // Set maximum number of sessions per remote address + container.setMaxSessionsPerRemote(2); + + return container; + } +} diff --git a/src/main/resources/application-prod.properties b/src/main/resources/application-prod.properties index ba2ae9b..375ee15 100644 --- a/src/main/resources/application-prod.properties +++ b/src/main/resources/application-prod.properties @@ -2,6 +2,11 @@ spring.application.name=RandomChat server.tomcat.threads.virtual.enabled=true +# Rate limiting configuration +spring.websocket.max-text-message-size=65536 +spring.websocket.max-binary-message-size=65536 +spring.websocket.max-sessions-per-remote=2 + twilio.account.sid = ${twilio.account.sid} twilio.auth.token = ${twilio.auth.token}