关于可配置细节，参考 [“配置类”](/article/729) 的内容。

### 启动一个简单的服务端

使用具体的`传输协议`，要导入对应的适配包。比如：`sd:ws`，要导入 `org.noear:socketd-transport-java-websocket`

* 原生接口方式

```java
public class Demo {
    public static void main(String[] args) throws Throwable {
        //创建监听器
        Listener listener = new SimpleListener(){
                    @Override
                    public void onMessage(Session session, Message message) throws IOException {
                        System.out.println(message);
                    }
                };
        
        //启动服务
        Server server = SocketD.createServer("sd:ws")
                .config(c -> c.port(8602).sslContext(null)) //如果有 ssl 需要，添加 sslContext
                .listen(listener)
                .start();
        
        //添加安全停止
        Runtime.getRuntime().addShutdownHook(new Thread(()->{
            RunUtils.runAndTry(server::stop);
        }));
    }
}
```

* Ioc 容器管理方式（假代码示意）

```java
@Component
public class ListenerImpl implements Listener { //内置有多个不同功能的监听器，可借用
    ...
}

@Component
public class ServerLifecycle implements LifecycleBean {
    private Server server ;
    
    @Inject
    private Listener listener;
    
    @Override
    public void start() {
        server = SocketD.createServer("sd:ws")
                .config(c -> c.port(8602))
                .listen(listener)
                .start();
    }
    
    @Override
    public void stop() {
        if(server != null) {
            server.stop();
        }
    }
}
```



### 附：服务端接口


```java
/**
 * 服务端接口
 */
public interface Server {
    /**
     * 获取台头
     * */
    String getTitle();

    /**
     * 获取配置
     * */
    ServerConfig getConfig();

    /**
     * 配置
     */
    Server config(ServerConfigHandler configHandler);

    /**
     * 监听
     */
    Server listen(Listener listener);

    /**
     * 启动
     */
    Server start() throws IOException;

    /**
     * 停止
     */
    void stop();
}
```
