sebasira/tcp-spring-boot-starter


Is convenient dependency descriptor that you can include in your application to get started using Spring and TCP-servers.

Download


Step 1. Add the JitPack repository to your build file

Add it in your root settings.gradle at the end of repositories:

	dependencyResolutionManagement {
		repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
		repositories {
			mavenCentral()
			maven { url 'https://jitpack.io' }
		}
	}

Add it in your settings.gradle.kts at the end of repositories:

	dependencyResolutionManagement {
		repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
		repositories {
			mavenCentral()
			maven { url = uri("https://jitpack.io") }
		}
	}

Add to pom.xml

	<repositories>
		<repository>
		    <id>jitpack.io</id>
		    <url>https://jitpack.io</url>
		</repository>
	</repositories>

Add it in your build.sbt at the end of resolvers:

 
    resolvers += "jitpack" at "https://jitpack.io"
        
    

Add it in your project.clj at the end of repositories:

 
    :repositories [["jitpack" "https://jitpack.io"]]
        
    

Step 2. Add the dependency

	dependencies {
		implementation 'com.github.sebasira:tcp-spring-boot-starter:1.11'
	}
	dependencies {
		implementation("com.github.sebasira:tcp-spring-boot-starter:1.11")
	}
	<dependency>
	    <groupId>com.github.sebasira</groupId>
	    <artifactId>tcp-spring-boot-starter</artifactId>
	    <version>1.11</version>
	</dependency>

                            
    libraryDependencies += "com.github.sebasira" % "tcp-spring-boot-starter" % "1.11"
        
        

                            
    :dependencies [[com.github.sebasira/tcp-spring-boot-starter "1.11"]]
        
        

Readme


Описание

tcp-spring-boot-starter - Spring Boot библиотека, которая позволяет быстро разворачивать TCP-сервера. Включает в себя:

  • @TcpController - аннотация, помечающая класс как TCP-контроллер,
  • ServerUtils - бин, с помощью которого можно управлять сервером.

Контроллер может содержать три типа методов:

  • Метод-событие получения сообщения. Должен начинаться со слова receive и иметь два аргумента: Connection и Object (или любой другой, тогда метод приема будет типизирован).
  • Метод-событие нового подключения. Должен начинаться со слова connect и иметь аргумент Connection
  • Метод-событие отключения клиента. Должен начинаться со слова disconnect и иметь аргумент Connection

Примеры

import javagrinko.spring.tcp.Connection;
import javagrinko.spring.tcp.TcpController;

@TcpController
public class EchoController {

    public void receiveData(Connection connection, byte[] data) {
        String s = new String(data);
        connection.send(s.toUpperCase().getBytes());
    }

    public void connect(Connection connection) {
        System.out.println("New connection " + connection.getAddress().getCanonicalHostName());
    }

    public void disconnect(Connection connection) {
        System.out.println("Disconnect " + connection.getAddress().getCanonicalHostName());
    }
}

application.properties:

javagrinko.tcp-server.port      = 20502
javagrinko.tcp-server.auto-start = true

Установка

1) Необходимо добавить зависимость в build.gradle:

repositories {
    maven {
        url "http://jcenter.bintray.com"
    }
}

dependencies {
    compile 'javagrinko:tcp-spring-boot-starter:1.10'
    ...
}

2) в файле src/main/resources/application.properties задать настройки сервера:

#Порт сервера
javagrinko.tcp-server.port      = 20502
#Автостарт сервера после загрузки application context
javagrinko.tcp-server.auto-start = true

Если автостарт не задан или установлено значение false, то необходимо вручную запустить сервер из кода:

@Component
public class Starter {
    @Autowired
    ServerUtils serverUtils;

    @PostConstruct
    void setUp(){
        Server server = serverUtils.getServer();
        server.setPort(20502);
        server.start();
    }
}